My general approach is to only use the most basic services from each cloud. VMs, networks, L3 load balancers, blob storage, etc

Build the rest yourself. In many cases their higher level service is just the same open source package you would run, just managed worse.

this. with Kubernetes, you can get very far with just this and you won't have to deal with lock in BS either