There is no need of nor no sense in going to Apple to be rid of corporate control, Android can be tamed to serve the device owner instead of its manufacturer and distributor. Make sure to get a device which is supported by one of the AOSP-derived distributions, install said distribution and use one of the alternative repositories (FDroid being a good choice). Don't install any Google-specific apps, don't install - or remove - Google Play Services, in short don't play along with Google's game plan. This way you can have a device which serves you and your needs instead of those of Google or Apple. You might need to forego on the latest app craze because those are not available on FDroid but that just gives you so much more time to do other things instead of search for virtual fame and fortune by herding virtual sheep or finding virtual friends.
The general public part of the problem can be solved by offering an alternative Android-based distribution which can be installed by 'the general public' in a way similar to that which they install updates to the stock OS. For some devices this process is already available, for others there is more work to be done.
Project Treble[0] only enforces a certain level of hardware requirements.
There are zero requirements for OEMs or carriers to actually push updates to their devices, and they are still allowed to customize their forks. [1]
Also it requires consumers to buy a new device running Android O, hoping that the OEM will actually push updates, because even those getting an update from Android N to O won't have any guarantees of further updates.
I don't count on OEMs in any way. However, if my understanding is correct, Treble should make it far easier to install an aftermarket ROM on a Treble-compatible device.
When I shop for my next phone, "Treble-compatible" will be the top requirement.
There are alternatives to unlocking the bootloader. My current device (a 2011 Motorola Defy) can not be unlocked yet still I'm running it with Android 4.4.4 on a custom kernel. The trick here was to subvert the update process, other ways exist to do the same.