But the job with the largest straight-line distance could easily be the job with the shortest actual path, so this fails. (A* also already takes this into account, which is what makes it different from Dijkstra's).
But, if you have a job with distance 20 you know no job more than 20 straight line squares distance away can be closer. So if you start with the linearly closest jobs you're very likely to be able to exit early.
Sure, that's what A* does already. But what I originally disagreed with was whether you could choose a job based on distance without pathing there, and I stand by my statement that you cannot. Not if you want to be optimal. This is a good heuristic, but not a good way of eliminating jobs from consideration, as Impaler seems to be suggesting.
Anyways, this pathfinding discussion is slightly off-topic. To get to the original question, I don't think it makes sense to focus on prioritizing specific jobs (like "build this wall section") because it's too much micro and a pain for UI. I also don't think a "hybrid" system is necessary or will accomplish what is intended. Instead, I think in v-p-l you should be able to not only enable/disable tasks but also rank them in the order that that dwarf should prioritize them. This is also much more useful than prioritizing specific jobs, since you only have to do it once.
Implementation-wise, a first step would be to split the job list into separate queues for each item in v-p-l. This reduces the number of jobs a dwarf needs to consider when it's choosing. This is sufficient if you don't care about choosing the closest job: an idle dwarf can just choose the first job in the list for its highest-priority task. (This also means all jobs will get done eventually.)
If you do want to find the closest job, it will (of course) be more expensive, and it also means that some far-away jobs might fall by the wayside, although I don't think this will be a huge problem. (One solution might be to weight older jobs higher.) I would guess that since the game is pretty snappy about giving you distances to every kind of building material available, Toady probably has a pretty good system for when you need to path to a bunch of things at once (you can cut corners because when you're calculating the path to the nearest orthoclase stone, you can re-use some of the pathing information from when you found the nearest microcline). This would probably let you find paths to the available jobs pretty quickly.
One advantage here is you could be more subtle with priority than just "Urist always chops wood before hauling wood." Instead you could, say, subtract 100 from the path cost for a high-priority job, or something to that effect, so Urist would go farther to cut wood but wouldn't cross the map to cut a tree down before hauling the log he's standing on.
Dwarves would choose their own jobs from the list without having to search for them, based on distance
This is a contradiction. You can't know the distance to a job unless you path to it.
The list would hold the jobs X/Y location. They wouldn't have to search for anything, all the information would be in the list. But they might still have to path to it.
OK, but putting the XY coordinates in a list doesn't help you a whole lot, because there could be any number of obstacles between the dwarf and the job.