waxoyl probably the best, painting with engine oil 2nd, underseal 3rd!
Not a big fan of underseal, as it can allow ingres of water under it, and the underseal can hide the growing mess underneath.
I use waxoyl, and old engine oil sometimes as a top-up... Waxoyl (or dinitrol, very little...