Unfortunately moving from single-threaded to multi-threaded processing is a far from trivial thing.
If you are REALLY lucky you can slice off some tasks and move them into separate threads (Maybe some stuff like pathing or temperature changes could be pre-calculated and then cached, making operations that use/implement that faster - only some idle guessing here)
It is entirely possible to slice off some tasks to separate threads. The guys over at http://www.seedofandromeda.com/ are doing that for their game. They actually split off the planet generation from the CPU and shoved it over to the GPU recently. So there are a lot of things that can be done.
It depends on the nature of the task. Tasks that are independent can be split into different threads if the design isn't convoluted. Also, Toady has no interest in doing early optimization, which is understandable considering the state DF is in. Optimization to early can often lead to a lot of work rendered useless later, because the process changes. It can also help to identify problems early, and minimize their impact before your design becomes based on a flawed technique.
However, from a glance at functions that occur in DF, there are certain tasks that could definitely benefit from multi-threading. There are also a lot of tasks that could be offloaded to the GPU for optimization. But I totally understand why Toady wants to do the fun work before optimization. I'd really hate to write a lot of code to perform map functions (some pathing, temperature, pressure, etc.) on the GPU, only to find later I have to redesign how the map stores information, rendering that optimization useless.
This is the kind of thing we could argue on for ages and never find the right answer, because frankly I think the answer depends on the situation. However, back on topic, I find that multi-tasking works better when you start out thinking about it, rather than force an old code base into different threads.