You're talking before the fairly meteoric rise in the standard of web programming over the past few years. Before blogs. When tables vs divs was an actual argument. When C++ was relevant in anything apart from high performance programming.
You're also talking about .Net 2.0, pre-LINQ, extension methods and MVC.
And reading your post makes it sound more that you have a chip on your shoulder about bad programmers more than anything else:
lazy, non-challenged developers
ASP.NET is a hulking piece of shit, anyone that tells you otherwise is lying and/or too stupid to realize it
other .NET developers you know are unchallenged nitwits without any sense of vision, any sense of craft. A bunch of me too dim wits who collect paychecks by copying and pasting their way to completion
redmond regurgitating drone army
There are lots of jobs in .Net or java. There's sweet fa for a crap programmer in OSS. Once you realise that is the reason you came across so many crap programmers, perhaps you can understand that there's nothing actually wrong with .Net, it was actually a pretty fucking big revolution. On the other hand you will still come across .Net programmers who think datatables are pretty funky, rely heavily on view state and bizarrely believe .Net controls aren't the spawn of the devil.
As for the rest of it, honestly, 'Win2K server admin', um, it's moved on man. Stop beating the straw doll. 'The world is open now', look a little more objectively at the world we actually live in. Did you even notice the iPhone come out a few years back? Or the Kindle? Or all the other closed source proprietary systems that a me too OS movement gleefully copies, badly for the most part. There's plenty of room at the table for both.
Yes MS have turned into a pretty crap company under Ballmer, but their language teams are still pretty damn good.
The reality is you've become a more experienced programmer. And somehow you're magically attributing it to OSS instead of just knowing more than when you were wet behind the ears.