Your first bullet is addressed by the upcoming 2.2 release, and is included in the milestone released yesterday.
http://www.springsource.org/node/3586
https://jira.springsource.org/browse/INT-1132
However, it doesn't support transactions on the scheduler thread, yet; please go ahead and open a JIRA issue https://jira.springsource.org/browse/INT
When rescheduling messages after startup, we use the original arrival time of the message, and the delay, to determine the release time (if not past due, in which case the message is released immediately).
Adding transactions raises an interesting issue - when should the release be scheduled? By definition, the message's release time is already past due; does the message get a new delay cycle after the transaction rolled back, or do we reschedule immediately? What if the delay was based on a Date header (specific release time)? How do we reschedule that?
Gary P. Russell
Spring Integration Team
SpringSource, a division of VMware