Custom Posts Types as Custom Fields

Just using hierarchical post types is completely valid. You can do nearly everything with that and probably won’t need to go beyond that.

If you really need n/n relationships (which I doubt from your description), take a look at the Posts2Posts plugin.