The Affero license sounds closer to what you want. It doesn't stop someone from using the code internally without releasing improvements, but it does stop a company from building a network-based product on top of your code without releasing their improvements.
Beyond that, though, it sounds like what you want is actually a bunch of mandatory process bureaucracy. You seem to want everyone to be required to contribute to the original repository, but that's a maintenance nightmare. This would pretty much prohibit forks (pushing changes upstream from a heavily modified fork is non-trivial), and add senseless work to lots of derivatives (e.g. some project B uses a tiny piece from A, but now has to attempt to send all changes upstream, no matter how irrelevant).
http://www.gnu.org/licenses/agpl-3.0.html
Beyond that, though, it sounds like what you want is actually a bunch of mandatory process bureaucracy. You seem to want everyone to be required to contribute to the original repository, but that's a maintenance nightmare. This would pretty much prohibit forks (pushing changes upstream from a heavily modified fork is non-trivial), and add senseless work to lots of derivatives (e.g. some project B uses a tiny piece from A, but now has to attempt to send all changes upstream, no matter how irrelevant).