I have experienced similar issues when I have started threads with @spawn that started their life with waiting for something.
I guess your issue may be related: the scheduler thinks that the threads are available and reuses them instead of round-robin-ing. For me it seemed that this is not a bug, although it was very annoying. I ended up using your solution from here: