There is still no easy way of doing this.
As an experiment you could try saving the JSON information of the root instance, and use that as a template to clone the whole hierarchy. Each instance holds a list of all the UID's which are it's children.
So, you could:
1) Clone the parent
2) Look up all the UID's of it's children (get the JSON from the AsJSON expressions)
3) Make clones of the children, add them to the cloned parent (using the existing runtime actions)
4) Repeat steps 2) and 3) for each child until the whole tree has been cloned.
I am not going to go into the specifics of the JSON format C3 uses, because all of this is not a great idea to begin with :P
There could be hidden issues I am not foreseeing. I can already see that before setting the JSON for each clone you would need to NOT pass any hierarchy information, because it would be for the old one.
I guess it can be an interesting thing to try out, but I wouldn't recommend it.
I am thinking the runtime action that is going to end up doing all of this work will do pretty much what I just described.