Those sound like overkill to me, what about returning multiple shapes from your driver?
Let's say for example one of your content types parts contains something that "unifies" it with related items, be it a number or string or something. (the science project connectors do this with Ids if I am not mistaken)
Now at this point would be the time to decide if you want to use a LazyField(s) to actually bolt the related items onto the part or use an injected ContentManager to fetch them in your driver, if your using LazyFields there is lots of guidance in these discussion
groups on how to do that and I would refer you to them as I think we want to get to the guts of your question, if you decide to just fetch them with the ContentManager that is done the same way you fetch content with it anywhere else.
In any event in your driver instead of returning a ContentShape using the method use the method Combined. i.e:
() => shapeHelper.Parts_Shape_One( Prop: Value )
() => shapeHelper.Parts_Shape_Two( Prop: Value )
You can return any number of shapes this way. Then you simple "place" both shapes and have views for them. Viola! 2 shapes, 1 page.