Old engine oil as an undercoat is as you say messy but I think coupled with regular inspections is probably as good an undercoating as anything you pay money for - well all of the stuff that is sold over here in Europe anyway. The main benefit of old engine oil as I see it is that you can quite easily remove it if you need to...
Other possibilities are waxoyl and Dinitrol
Check out this recent thread:-
Reviews on this rust prevention product