How about making it 3D instead [X,Y,Level]? This will naturally take up more memory but it will make everything run smoother, including accessing maps, saving them and changing them.
What kind of 2D array are you using? Integer? I would actually store the map class inside a List<> Array object. This would probably be the most elegant way to handle maps, assuming you are able to use such object or anything close to it.
Anyway I'm really glad dungeons in your game are now turning persistent. One thing you could do, which I really like, is having a shortcut escape route when fulfilling the site's objective. In other words, the player would return to surface just in just a couple of turns even though he descended many levels bellow ground. Skyrim has this and it really rocks, because going back through all those now empty explored areas is very tedious.