It's a shame our options have been reduced to a false dichotomy of pay-for software where you have no access to the source, and pay-nothing-for software where all you have is the source. There was supposed to be another option for pay-for software where you have access to the source and may make changes to that source to suite your needs: "free" was supposed to refer to "freedom" and not "cost." But no one seems to have gone that route. Is it just not viable?
The problem is that for-pay software that gives you some freedoms manages to piss off everybody. It's not "open source". It's not "free software". It can be characterized as trying to astroturf your way into free goodwill. And you have minimal real protection against someone cloning your software.
I am currently trying to build a product on this model, because I think it is pragmatic. Not sure how it will work out.
There's nothing stopping most commercial products from releasing their source. It wouldn't impact sales. It wouldn't be a competitive disadvantage. The Code Combat team open sourced everything, and as far as I know they didn't suffer for it.
Management is just skittish. Nobody wants to open source because nobody else wants to open source.
A number of companies are successfully charging for use of their open-source software as a hosted service. For example, getsentry.com and travis-ci.org.