The big question here is how to construe the relationships between these parties:
1. The company that is the original and primary developer of a product's source code
2. Users, either a) other companies, or b) an individual using the product personally
3. Competitors that would use the source code to sell an identical product
To have a chance of maintaining a sustainable community you typically exclude 3, and 2 pays 1 (modulo segmentation/whitelabeling). The problem is users don't want to give any one developer complete power over their systems and their knowledge to be used as leverage against them, so they want some compensation that guarantees this doesn't happen. I'd say this is the basic market economics-oriented reason why Free/Libre Open Source Software (FLOSS) and Open Source licenses exist; its purpose is to be that compensation and guarantee that freedom.
The problem is that the design of Open Source licenses have over-corrected and resulted in communities that are unsustainable and unable to bring software up to the level of fit and finish that users have come to expect from closed-source products whose lock-in could be leveraged to exploit users.
Open Core doesn't work because it yanks the incentives out of alignment and by construction causes a conflict of purpose.
I suspect a MariaDB Business Source License (BSL)-style license [1] is probably the best tradeoff for a company and community relationship. The basic idea is to start as one type of source available license, and then after a period of time the license of parts of the code 'decay' into a second, typically more libre license. This pushes the company to continuously innovate so their license is worth the cost, and if the company goes totally sideways users are assured that they can pick up the pieces after some fixed delay. Time is the correct dimension in which to solve this problem.
[1]: https://mariadb.com/bsl11/