To put it simply, Hyper-threading keeps the CPU busy while threads stall out waiting for memory.
There's your problem. If a program stalls for just a short while, and then your CPU drops it and finds a new task, you have to wait for the program to be reinstated with CPU time.
For most tasks, this would mean less dropped Processor time, but in a case like Dwarf Fortress where we're not looking at other programs running along side it, it's gunna hinder it more than help it.
But, since I don't work for intel, I'm hardly in a position to make heads or tails of their--Uhh, stuff.
But, as a programmer, I can say without a doubt, being able to utilize multi-core processing relies entirely on the logic of the intended use, and not on the program, or programmer.
Simply put: If the program has to do things in a liniar order.. Like many programs do- (Hello world would be probably the top of the list, due to it's outstanding simplicity. Dwarf Fortress however, is most certainly on the list though.)- Then, even if you do come up with a long winded way of making the program multi-threaded, it's not going to see a fantastic process time relief.
Trying to clear my point up a bit here, to work out how easy it's going to be to make something multi-threaded, all you have to do is work out vaguely what the program is doing.
In the case of Dwarf Fortress, it runs in frames. So it's compiling each frame. Now, I'm not certain about how it works, but I'm pretty sure that everything within a frame is relies on other things in that very same frame, so while it's compiling said frame, it can't split tasks up and have other things like pathfinding go off on another thread, or else the pathfinding thread may not be ready by the time the rest of the frame is. Which would then mean the program has to stall to wait for that thread to finish...
I guess you could compare it to cars on a motorway. A van full of people is gunna be slower than three cars, but you can't use three cars if you end up designating a baby as a driver, in a different car to it's pairents.
I found on my lovely Phenom II X4 that actually, Dwarf Fortress runs best when given it's own independant thread. That way, while everything else is humming along nicely, Dwarf Fortress gets top priority on all it's processing needs. Like a bus lane.