When rolling an encounter in a monolair hex system, roll a d8. On a 1-5, it's an encounter with monsters of the hex's lair's type. On a 6-7, roll another d6, and index that into the adjacent hexes. On an 8, it's a transient from the encounter table for this terrain type.In my enthusiasm, I promptly went and started working on a 4800-hex wilderness map... and quickly realized that I had bitten off more than I could chew. Dynamic lairs, or something like them, are an obvious solution for those (large) parts of the map where inspiration fails to strike.
Fortunately, the process I proposed is readily extended to place lairs dynamically, though it was not intended for this. Roll the d8 to determine where the monster came from. If it came from a hex with no lair assigned, roll on the random encounter table for that terrain, and place the lair as appropriate. If it's a monster with a "no lair" entry, then just treat it as transient and don't worry about it.
This process actually handles restocking, too - if a lair is cleared, and then it comes up as the source of a random encounter, you restock it. This could get a little weird, because areas where the players haven't been in a while will remain cleared until they return, but I'm willing to live with it (checking on a per-game-time roll to restock across an arbitrarily large number of empty hexes is reasonable machine work, but not a good approach for humans).