The first step is to realize that #1 and #3 are incompatible.
By definition, "open source" means people who acquire the software, including those who download it from its github project page, are allowed to use it for commercial purposes without paying for a license.
You cannot say that a project is "open source" if it has a license which restricts it to non-commercial purposes.
I'd dual license it as GPL/Commercial. People can use GPL code for commercial purposes but its use will be limited, and any company serious about using it without risking legal issues will pay for the commercial version. Qt follows a similar model. You can look at AGPL if your project is SaaS.