I do not know of any existing solution to do this but a simple idea would be to use 10 pools with one desktop in each pool, non-persistant, and then use AD to control the access to these desktops.
There is plenty of software or scripts out there that can easily add and remove memberships in the AD-groups.
The question will be what to do when at end of the reservation, should the session be aborted and given to the next user or should it be a grace period, not sure how to handle that one.
// Linjo