Fixed the concurrency bug

I am still not totally sure why I was getting kernel panic recursion.
That is something to investigate if there's time.

The issue was that I was being dumb in the timer, and adding the
sleeping thread to the timer wait queue outside of an interrupt-disabled
block. Live and learn I guess.