SchedulerThread.executeTimers() executes in a single transaction.
All Timers execute() methods are called in this transaction and the changes to the Timers themselves are persisted in this transaction.
The failure of any one of the transacted resources in any one of the Timers would roll back all changes (workflow state as well as application resources) made during this call and we would effectively be where we started (probably running into the same failure the next time executeTimers() is called.)
The use of a single transaction seems to be intentional (http://jira.jboss.com/jira/browse/JBPM-46 where Tom states that "we only use one transactional resource (jdbc connection) so ..."
As we are talking about potentially thousands of Timers executing in a single transaction this doesn't seem to be viable.