I've used POR, undercoat, basic Rustoleum and their rust reformer product over the years...
POR works best, is most expensive, requires the most prep and doesn't bond if you don't prep well.
Dunno about 3M but the undercoats I've tried in the past are porous enough to allow moisture through. You'll find the rust later when you scrape it off for one reason or another.
Basic Rustoleum doesn't work well, it soaks oil and abrades off easily. If it's bare metal, use primer first.
Rustoleum primer and rust reformer work well enough as long as you use a couple coats, then top coat with something. For the price and ease of use, it beats POR if the problem is minor.
For large rusted areas and metal sandwiches where you can't tell if there's rust between the plates, use POR. For sandwiches, goop the stuff on, around and in as much as possible, it is gap filling, penetrating, and will act as a bond between layers. It's great for protecting joints between frame rails and crossmembers. Remember it's not a paint, it's a chemical and makes a very strong bond to prepped and rusted metal, also because of this keep in mind if you get any around a bolt, it almost always penetrates the threads and that bolt will never, ever come out once the POR dries.
-Sean