Support multiple timeout workers
Similar to supporting multiple network pollers, as discussed in #274 (closed), we should add support for multiple timeout workers. The way these are implemented may result in them quickly becoming overwhelmed if a large number of processes perform operations that involve timeouts.