I have a small layout with 027 track and curves, and despite having many "no-no" track configurations that cause derailments like "s" curves and turnouts on curves and turnouts directly off curves, I have zero derailments. And haven't had one in many many years.
I drill out rivets holding truck sets on rolling stock - many of the type pictured here by the OP - and reattach them with truss screws and lock nuts. A truss screw has a larger head for greater stability. You could use a washer with a smaller head screw.
Larry, what you want to do is tighten the screw all the way until the truck cannot swivel left to right easily. Then, slowly loosen the screw just enough so that the truck freely swivels left to right. The idea is to eliminate the truck wobble (which will cause derailments either running in reverse or running in a long length train), while allowing the truck to turn freely. Having the truck screwed in too tightly will obviously cause derailments on every curve.
Also check the gauge of your wheelsets by holding them right next to each other so see if they are the same. The gauge on wheelsets on a single truck need to be the same. They can differ from truck to truck with no adversity in operation. But not on the same truck. I once bought a bulk bag of fast angle wheel sets and was surprised to see all the variance of wheel gauges within one bulk bag of wheelsets.
The only rolling stock I ever add weight to, are cars with roller pick up assemblies with plastic trucks. Adding weight to these will help with better electrical contact for illuminated cars. I don't wish nor need to add weight to any other rolling stock. Why do that? It only makes the locomotive work harder to pull the same length train, thus wearing out the motors sooner.