1) Simply don't call it "open source software." Making up new definitions for open source is more harmful to it than anything else could be. There's nothing to open source except licensing.
2) The usual way to do this is to AGPL your software (or be even stricter), and sell it by relicensing it for businesses who pay you so they can use it how they wish. You don't have to make up a new "non-commercial open source" license to do this.
edit: It feels like OSS people are haphazardly stumbling through the thought processes that lead to the GPL in the first place. Once you've made an open source license that doesn't allow people to make money using the software, does it matter whether they share their changes or not when they distribute?
What's motivating people to reserve the right not to share changes in the software they distribute for free, other than to maintain a now enforced as worthless (by this particular license and similar variants) distinction from the GPL?