Although personally I wouldn't use a tiered hierarchy for the nodes. I'd use a mesh.
Under the assumption that every group of tiles has the same "edge" weight (as far as A* is concerned) it would actually return the red path:
S, door, hall (orange), hall, (pale orange), hall (yellow), door, F
As it would be shorter than:
S, door, hall (orange), "central tower", hall (orange), hall (pale orange), door, F
Depending on how the tiles are grouped.
Obviously you'd want some weighting for each grouping, but you'd have to balance between using an abnormally high value for a long skinny hallway that the dwarf only needs to walk 3 tiles to cross, or an abnormally short distance for a long skinny hallway that the dwarf needs to walk the 37 tiles down.
Although it may be possible to determine these values when the mesh is built, giving each edge a weight based on the distance, or at least one that is "close enough" that it works.
For instance, on square nodes the weight would be the side length (the only path that is longer are the diagonals, but not by much). For rectangles (especially ones that exceed a 1:2 length to width ratio) the weight would be the distance across the rectangle perpendicular to the connecting face. So a node connection on the long face has a weight of the length of the short face; connections would be direction independent (the node you're entering).
This would mean that the length would be artificially low if the dwarf has to cross and travel down a long hallway, but is an acceptable failure to find the "shortest" path, as all we need is a sufficiently efficient path using the fewest processing cycles as possible.
So our red path above is an approximated length 26, the blue 45 (using the node boundaries as drawn). In reverse the distances are 23 (red) and 51 (blue). Actual distances are 27 (red) and 34 (blue).