I ended up with two pieces of functionality to solve my problem.
1. Create PageController view that the Navigation service calls that takes care of creating a scoped UnityContainer and RegionManager and sets the RegionManager attached property on the page control. The page controller then creates the ViewModel in the
scoped container (and hence I don't get region name conflicts by navigating to the same page more than once).
2. I create a custom behaviour that inherits from IHostAwareRegionBehaviour that checks that the host datacontext object (ViewModel) implements IRegionManagerAware. If it does, it calls OnRegionAttach and send through the region name as a parameter. My ViewModel
can then listen for a particular region and safely load views into it.
All this is just a variation on post I found although finding IHostAwareRegionBehaviour was the key to getting this all to work.