I've had good results with a product called "Coroseal":
http://corroseal.com/
Yes, it's a bit of an eco-product because it's water-born, but hear me out.
The water actually helps it easily seep into the rust scale. It also spreads over a very wide surface area and makes for easy application and cleanup. Best of all, its a one step process. It contains latex binders that convert it into a fairly durable, but slightly flexible primer that can be recoated at any time. Once covered, and all the metal is black (white patches tell you were more is needed), I used a high solids single stage industrial enamel, or fiber reinforced undercoating. If using Undercoating, I still use an oil spray to keep the tar from drying out. This makes for a self-healing moisture resistant barrier.
Up here in Canada, you can buy Coroseal at Cloverdale Paint Supplies. It may be available down south under a different brand name, but I'm not sure.
As for under-oil coatings. I use a product called "FluidFilm", which has a large amount of woolwax mixed into it. It creeps across surfaces and can stay in place in all buy the most exposed areas. Wheel wells and floor pans directly in the wheel spray may require touchup halfway through the winter but it works VERY well. Many on YouTube have documented tests with Fluidfilm vs purpose made automotive undercoating oil and often it works better than what the "professionals" use.
Whichever oil product you use, remember to get it into every seam joint and drain hole you can find (rattle cans with the straw-stem are best here). Get it inside cab corners, bottom door edges, joints under the floor pan, wheel arches, and so on. Those are the spots that rust from the inside out. By the time you see rust there, it's already too late.
Rubberized undercoating looks great when it's first applied, but if you have rust underneath, it will often make things worse. It is best used as a chip-guard on surfaces that are already nearly new. And even then, most of the stuff you find is junk anyway.