I run a calendar server[0] that is my main calendar repository. And I use vdirsyncer[1] to sync to my laptop to use khal[3]. On the Android side I sync with davx5[4].
This allows me to subscribe to webcal calendars, which outlook365 offers, and syncs them to my two main devices.
Not perfect because that means I can't edit my outlook calendar from within this system ( and a reminder why open standards and interoperability are important ), but it means that my private calendars and addressbooks are self hosted.
You are right though, that takes effort. And I want to snark at microsoft for not supporting caldav, but then I am waiting for gnome-calendar to support it as well. It doesn't seme to and that feels a bit strange to me.
[0] https://radicale.org/ [1] https://github.com/pimutils/vdirsyncer [2] https://github.com/pimutils/khal [3] https://github.com/pimutils/khal [4] https://www.davx5.com/