I am making a roguelike too and just started delving into random map generation over the last week, I can create these in a second, maybe 2.

That is a way zoomed out pic of a 100 x 100 cell map with a cellsize of 32
I fill a map with walls to start(all walls added to filler list)
Add stairs up and stairs down, link them to previous/next maps.
then I have a special Room type, I grab a random filler from the list, put the abstract room down and it expands
randomally, grabbing up grid points that it takes out of filler and adds to the rooms list instead,
Once rooms are generated from filler... I add the DrunkenMiner node to the map(tilemap) and let it do it's Drunkards Walk, where it runs around gobbling up walls and adding them to the floors list instead.
I also require the DrunkenMiner to visit each room and map feature to ensure everything is reachable. I also add "noise" to those straight paths to map features. Basically grabbing a random number of random adjacent points to each line point and dig them out if they are filler, makes kewler caves :P.
I generate my maps on a 2dimensional array filled with a custom Terrain type, then add the appropiate tiles to the actual tilemap afterwards.
p.s. if you are using GD.Print() anywhere in your generation code it will slow it way down. Also I would check out Roguebasin, they have some great articles.