Just don't try to force-fit them on something different. All of this, of course, is looking from the programming-abstraction point of view. It's much harder to get right from the performance-sucks point of view. Without it, you're fucked. Then, code it, and debug it.
Threads are useful.
Of course, in both cases using some conventions can help bigtime. Both conversions eliminated buttloads of bugs. And there was the equivalent of race conditions even back in the state machine version. You can crunch it down to a micro kernel, but that sucks in other ways, and your servers will probably need their own threading anyway. Don't do that unless you have no choice.