I'm with you on most of the suggestions. Get some prototype running first, and then flesh it out over a number of iterations.
However, starting with a good code base is a necessity, so that you don't struggle with it later. But you should obey the YAGNI rule.
My desires are a bit ambitious, and I really need a very good architecture and code discipline to pull it off (the elegant code — it does not need to be perfect, but it needs to be elegant). Fortunately, I don't have a time limit as you did. I just need to keep myself motivated.
Maybe in 2 or 3 years I'll be asking for beta-testers here. ;-)
Oh, and about the levels layout, what I mean is that corridors that lead to nowhere are a bit silly. Form should follow function.
Determine your space, set-up some rooms, then connect them with corridors in a logical manner. This is how architects work. In Wolfenstein 3D, they seemed to be like a maze because that was how it was common to do at the time, and I never knew where the hell I was. It was not that fun for me, and I only had the patience to map the first level.
Also, making the player test
every wall for secret passages is silly.