Currently, timers are not compatible with process persistence.
The main problem is that timers do not survive session dispose and persistent processes (obviously) do.
If a process waits on a timer, its state is persisted and control is returned to the client that will most likely end the interaction with the process runtime by disposing the knowledge session and the process will forever stay in the waiting state.
IHMO the solution will require creating some stateful service that will represent the process engine runtime for the whole time jBPM is deployed. Its state would have to be persistent and active timers would be part of that state.