@fwilliams42
You''re comparing apples to oranges when you're talking about 32bit devices like the AVR, PICMicro as well as the 8051, 680x architectures in the same breath as 32bit architectures like ARM Cortex and MPIs. I worked with different 8bit architectures for years (and wrote books about them concurrently). I don't think you can realistically work at the same level with ARM (or MIPs) or any other 32bit architecture - there's too much to learn to be productive in less than a year. That's why the libraries exist.
When I looked at your attached example code, I'm not sure you realize that you are relying on what is in effect manufacturer supplied device specific code resources and would probably not be available for different devices even if they are the same Cortex M architectures. The interrupt vectors are predefined by NXP and it's unlikely that other ARM vendors doing it the same way (taking advantage of C99's "weak" method label addresses). It also includes register structure and SRAM definitions that are definitely specific to NXP.
I also want to point out that your application is probably a quarter of the size I would expect for an actual "blinky" application. You haven't set up clocking (the device is running at the default power up 32.768kHz) and you need to setup the crossbar switch for more efficient operation. There's a lot more you need to do before you can consider this a "complete" application.
That's great that you want to base your applications on CMSIS, that's a big step in the right direction from trying to create applications that access registers directly like in an AVR.
People complain. If I were going to buy a USB charger from Amazon, I'd use the approach that you're using and look at the complaints before I look at the five star reviews. For Microcontrollers/Processors, that's an approach that will NEVER be useful in selecting a device. If somebody is keeping with a device despite deficiencies that have been complained about for a long time then there are positives about that device you're not seeing.
Hardware companies typically don't understand software development processes and while senior management has the desire to provide tools to make their products more attractive they don't have the will to pay to go all the way. I find, as a rule, chip manufacturers only get about 80% of the required work done before release and funding isn't available for adequate support.
It's tough to commit to a part family/manufacturer and you're right to want to test drive different products before deciding on which way to go. Don't limit yoursef by working at the level of 1s and 0s - take advantage of the full extent of the tools available to you and look at ALL the other aspects of the device as part of your selection criteria. Once you've done that, you can get deeper into the chip and be able to get more out of it.
Finally, if you use the available libraries right from the start you'll get projects working faster and you'll definitely have more fun with the chip!