As already expressed here, keeping a room list around is fine as long as you have a use for it.
I handle most pathfinding using "gradients." Any creature that actually does pathfinding winds up knowing how many steps from their location to the player, and before they move they can write a gradient number to the square they're on. The gradient number is the current turn times the dungeon width, minus the current distance to the player.
Other creatures can follow the gradients, as long as they're not too old. If you find that you are standing on a square with a gradient, and you want to go to the player character, just step to the adjacent square with the highest gradient number. So I don't have to have all the creatures do pathfinding. One goblin comes by doing pathfinding, then 30 more goblins follow in his footsteps before the gradient gets too old, and the 32nd goblin has to do pathfinding again.
And the player himself sets gradients (representing monster FOV) as we process his field of view. Every time the player sees a square, that square gets a gradient number. This allows
any monster standing on that square to know that the player is in the monster's FOV, this turn. This also allows a simple and effective "chase the player" behavior on the basis of purely local decisions on the part of monsters not currently in sight of the player; just keep stepping to the adjacent square with the highest gradient number.
In fact, with the player laying down gradient numbers in his FOV, you don't even really have to do pathfinding, as such, unless you want to.