Hi,
I just took a look at your patch and I am not completely sure we should solve it like this.
In general deleteProcessInstance method of DBSession should take care of deleting remaining subprocess instances. But the problem is in SubProcessActivity that within signal methods is resetting subProcessInstance field.
Simple comment that line will make execution being properly removed.
What do you think about it?
Cheers,
Maciej