I'm making some headway on this. My main issue was getting cloned submodels to reference the entities in the clone, rather than pointing back to the prototype.
It seems like clones respect "downhill" references. For example, the NextComponent in a submodel object can point directly to a nested submodel within. When the prototype is cloned, it knows to reference the nested submodel of the clone.
The reverse does not appear to be true. If an entity in a nested submodel points to an entity in the parent, the cloned nested submodel will point back to the prototype. The recommended way to handle that, as I understand it, it to leave those references blank in the prototype then populate them in the clone. With many nested submodels and many clones, that's a lot to keep track of.
I got around it by using the syntax "this.Parent.Parent.[<entity_name>]" in the prototype nested submodel. As far as I can tell, it seems to be working. It's early days, though. I'm sure there are more surprises in store for me!
One place I couldn't get it to work was with Thresholds. Not sure what's going on -- it acts like the error checker, rather than trying to resolve the reference, only checks the literal input list. The way I got around that was to add a (seemingly redundant) ExpressionThreshold in the nested submodel. That entity type allows and correctly resolves the "this.Parent.Parent.[]" syntax.
Anyway, here's a picture. My model is attached.