Apps stores are crippled excused for real package management. In the open world, you can import someone else's key and repository and install their packages. In Play/iOS/Windows you have a single provider. There's no bug tracker to add your packages and no way to add a stable and unstable channel..unless both apps are in the same store ...and every beta release then has to get approved.
iOS and Windows Phone devices may be limited to a single package provider, but Android devices are not. I've had more than one store on my Android phones and tablets for over five years now. And, yes, I'd love it if there were a standard way to include signing keys for additional stores so that installations were seamless, that's not a significant problem in practice.
Not really. It's called the Enterprise Program. While this is for 'enterprise', you can also use it - and Apple allows this - to distribute _outside the App Store_.
A few years ago I built a nice sms delivery system for installing an app I was working on. Text anything to our number (we had multiple numbers thru twilio based on market). App replies back with a download link. Install. It worked perfect and we could actually tell who requested the app and who installed it. We had around 75k users installing. Not millions, of course, but still, not too bad.
So, it is possible. We also did not have to wait for any approval process. And when the app started up, it checked for an updated version on our system. If there was, the app would then prompt the user to start the update. It was a very nice flow and we had many comments from users telling us that 'it just worked'.
This was app pre-iOS 7 and automatic app update, but it's still being used today.
In practice, they do. On iOS, you can only go through the App Store. On Android, while you can sideload, the vast majority of users are going to expect to get your app from the Google Play Store, and not bother to check anywhere else.
It's maddening. I wrote a thing about it and other Android issues: http://penguindreams.org/blog/android-fragmentation/