timer handling fixes

- use a unique id to identify timers
  clients tend to mix up timers if we use the index
- cache active recordings and prevent signalling
  of a newly scheduled recording if a timer completes