Another extra overhead caused by storing this paused status is that you have to clear the variables-whatever up on disconnection since mirc switches online timers automatic off for that network. So using in-between aliases to start/stop/pause/resume timers alone is not enough, the variables or hashitems need to be named in such a way that you can unset/hdel -w them alike hdel -w Net,SomeNetwork,Timerpaused,* with * representing the timername

Maybe something related: I'm busy on a script that makes alot use of timers (command queuing, scanning, timeouts, monitoring and performance-throttling), I name the timers following some rules, some examples:
Code:
* Timer sc_sendqueuewarnings 1800s delay SC_SendQueue_WarnSuspended
* Timer sc_ircscannerwhois 60s delay SC_IRCScanner_Scan COMMAND WHOIS
* Timer sc_sendqueuelowspeedcheck 60s delay SC_SendQueue_CheckLowSpeed
* Timer sc_ircchannelscan 30s delay SC_ChannelList_GlobalScan
* Timer sc_ircscannerjoin 20s delay SC_IRCScanner_Scan COMMAND JOIN
* Timer sc_ircscannerlag 30s delay SC_IRCScanner_Scan COMMAND LAG
* Timer sc_ircscannerwho 20s delay SC_IRCScanner_Scan COMMAND WHO
* Timer sc_scheduler 5s delay SC_Schedules
* Timer sc_ircqueueschopperinterval 5000ms delay SC_IRCQueues_Chopper OFF
* Timer sc_offers 1 time(s) 1642s delay SC_ChannelList_ShowAd TIMER REAL (UnderNet)

Format as SC_<systemname><purpose>
For throttling I sometimes switch a whole system 'off' temporarly, ie, processing stops, all timers for that system are paused, it would eliminate the need for a loop on all timers if you were able to specify wildcards in the timerwildcardedname -p or -r, it already supports it when switching off (timername* off) * 2 timer(s) matching name* halted.