@Brenden: Yes, using the API. Yes, caching TreeNode objects required by menu using caching API. I have reservations about using built-in Kentico components except where necessary and accept this means compromises. I maintain that large enterprises are rarely going to accept the limited behaviour of generic Kentico web parts unless they're somewhat limited in imagination.
@Daxid: That's the method I was looking for. Thank you. Must say I'm mystified by the sheer number of different methods and helpers in the Kentico API which often perform very similar tasks. TreeNodeProvider vs DocumentHelper for instance!