Are any of the sub-systems open for coding assistance? For example, I know that the water flow system uses a big chunk of time (just unleash a large flood and watch the game come to a crawl). I would find it interesting to try and tackle the problem and see if there was a much more efficient way to do water flow. Maybe you are doing it the best way already, or maybe not.
Is DF open to 'code' suggestions or incorporating 3rd party code (after you review it) of course? Pathing might also be something that might be optimized heavily. I have seen demos of many 100s if not 1000s of pathing objects that seemed to run very smoothly. I haven't tried it myself so I do not really know how hard it is to do, nor do I have any idea how DF tackles the problem.
There are some ideas I can think of which may or may not be applicable to DF with regards to pathing.
1. Unit clustering: If you have a guy with 10 dogs following him, you do not need to do a full path check for all the dogs. You can treat all the units as one super unit and just do a single path check for the dwarf and just assume the dogs are always near him. Put the dogs in his spot each move until he stops moving and then place the dogs in a random open spot near him.
2. Allow player's to create virtual roads: This would be very similar to the traffic regulator designators you have now, only this would be a big AI pathing hint. I could draw a path between two stockpiles, say an indoor wood one and an outdoor wood one. Then when the AI wants to go from stockpile A to B, it just uses a flagged path and knows that going one way moves towards A and away from B. It just knows that if it keeps moving toward A that it will eventually get to A. This way the pathing routines do not need to spend much time trying to figure out how to get 20 dwarfs to Pile A. Once a player makes enough paths between points of interest, the generic pathing routine only has to handle a few cases and will speed things up considerably.
3. Automatic path mapping: Internally, the game finds points of interest, such as workshops, rooms, stockpiles, doors, levers, etc... It then has a table with paths between these points. Initially this table will be empty, but as dwarfs go between points of interest the table will fill up. So when a dwarf is at carpenter shop 10, and wants to go to wood pile 12, it looks in its table for carpenter shop 10, and then looks in a sub-table for wood pile 12. if there is no path, then it computes one. If there is a path, it just uses the pre-computed steps.
Internally, the system finds paths to the nearest point of interest that leads to the ultimate objective and then daisy-chains these paths to find the final path. This is needed because it makes for smaller path segments and deals with changing conditions, such as doors that become locked, draw bridges that are up, etc... There is a lot more detail to go into, so I will not bore you with it.
Anyway, I would find such a problem very interesting to crack, and would work on it in my spare time if I knew that it would be useful, aka Toady One might look at it and incorporate it if it helped a lot. The water one is more tricky, which Id like to take a stab at after the pathing one, but only if a good solution would be incorporated into DF.