I've been sick so progress has been slow, I ended up completely reworking the timers though for easier frame-rate independence. I'm also ditching the multithreaded setup but might come back to it. I'm queueing game ticks to process every frame based on time spent instead, not unlike most game engines anyway i.e. Source