Danboline is the go to and very good as I understand it. However ive never used it, nor have I painted an engineroom bildge. .
You want something durable (not to soft, not to brittle) which is also oil based and as 'surface tolerant' as possible. Becuase the prep is always going to be sub par.
Recently I have used Rustoleum CombiPrimer and CombiColor Original and was impressed with the product. I then overcoated it with a coat of Dinitrol.
As the surface was 'freely rusted' I started by scraping and chipping the surface to remove all loose material (would have used an needle scaler if I'd had access to compressed air or enough power to run a compressor) and then treated with vactan.
Two pack aluminium epoxy followed with two pack polyurethane would be my go to if you could remove the engine and shot blast it, but its faff to remove from confined spaces if it fails, and I think would struggle to get oil free enough for oilbased not to be a better option.
If you can do it out of the water or in summer, it makes drying after vactan faster.