reuse timer data structures and timer ids

this also prevents timer_id from growing indefinitely