Hi Richard,
A1: it looks ok, are you having any trouble with that?
A2: the process will not be automatically resumed.. unless you keep the session alive
A3: I'm not up to date with those discussions, but I can imagine how to create the mechanisms for "long running timers"
A4: a) you can use an external quarts which a handler that load the session and do something with it, b) same as 'a', I think that you get it right, just get an external source
that notifies you when the timer is due and reload the session and some something like signal an event or insert a fact.
Cheers