Hi Nick,
I worked on some commercial software with a very similar concept (google 'mediamate'); and it's absolutely not easy :).
We went with creating wrapped 'composites' which were within a 'flow', but exportable as a template. So each instance of a running composite was unique and modifiable (e,g, even if two were in the same flow; each was unique), and did not affect other 'flows' where it had been used (basically, it was really only a visual representation; all the nodes existed in the 'flow' itself).
From the little I gleaned from the red source and testing, the 'subflows' get duplicated at runtime (e.g. context is not shared), so at runtime, it amounts to the same thing.
And if you import a flow from library in the web editor which included a subflow, it creates a new subflow rather than using the original if still present (even if unchanged)
Maybe in some future version of red we could consider an additional wrap type where the object is independent of global subflows. One of the issues then is that it should only appear in the palette if exported or published ('copied' out at a specific moment), but should still be double-clickable to edit the content within a flow...
best,
Simon