I have been thinking of implementing a similar long-lived process
rollback. One idea I had was implementing transactional branches to
roll back a workflow to a start position in case one branch "fails".
Unfortunately transactional branches are limited to "execute" and "set
value" processes out of the box. Livedocs state that it is possible to
develop transaction-aware processes using the SDK.
http://livedocs.adobe.com/livecycle/es/wb_help/00000524.html#1506548
If you are working within workspace/task management, one possibility
might be to use a process to re-assign/cancel a task if a "cancel"
event is thrown.
Your multiple-event idea is interesting. TourDeLiveCycle has some
cool on extended use of Event throwing & receiving:
http://tourdelc.adobe.com/content/Samples/CommonProcessPatterns/Events/EventsSendRcv.html
Good luck!
-Kasey