Pro tip:
Disable GSM (2G), disable WCDMA (3G), disable VoWiFi, disable VoLTE, disable VoNR.
You still get access to mobile data via 4G and 5G, but you just disabled all technology which allows phone calls. It's now literally impossible.
Drawback: It applies to outgoing phone calls as well. This includes emergency phone calls!!!
A less stupid method:
Check call forwarding settings, copy the number from "when unreachable" to "when busy". If everything goes right, the caller gets "The number you have dialed is temporarily unavailable..." or a similar message when you decline a phone call. For me this breaks with VoLTE enabled, and for the caller it seems as if it just kept ringing. It does however work with GSM-only.
Drawback: This method requires MMI to access call forwarding settings. MMI is only available on 2G and 3G, so your carrier needs to have those. But they may have alternative method for setting call forwarding, or perhaps there's some way MMI (and USSD codes) may work over IMS (the carrier would need to support that). I don't know, I am dumb.
Well... I am using the first method. I usually have a secondary cellphone with me, as a backup, so I could use that for emergency calls ¯\_(ツ)_/¯
But like this I just get SMS that somebody tried to call me without any network disruptions arising from possible handover to GSM if VoLTE doesn't seem preferable by my phone for some reason.
I am trying to think out a TL;DR explanation.
Mobile data is my only internet connection. My carrier only has towers in 1800MHz band but partners with other carrier which has faster network speeds for coverage extension (not load balancing!!). If I get anything else than 1800MHz, I am connected to tower owned by the other carrier, and get much higher speeds. E.g.: 25-40Mbps instead of 0.2-3Mbps.
On Qualcomm there's no way to force specific network bands without root.
I can force it to not use 1800MHz even in area where my carrier has coverage by temporarily blocking the signal by putting my phone into faraday cage for a few seconds. This usually needs trial-and-error as it's made to strongly prefer the carrier-owned towers.
As soon as I take out the phone and see e.g. 2100MHz, I need to keep some traffic flowing 24/7 which won't allow it to switch back to my carrier's towers.
This can be done in 2 ways: Connecting to VPN by using OpenVPN TCP (doesn't work with UDP) or pinging something 24/7 every second in Termux.
As soon as that network traffic stops, the phone tries to switch back to the preffered towers, those owned by my carrier. This may take as little as 5-10 seconds.
VoLTE calls won't disrupt this, but switching to GSM will as it needs to switch towers, and there's no way it's connecting back as I wish. Additionally, it possibly killed some upload/download I had running.
Of course, I can just keep it VoLTE-only, but switching that on takes like 5 seconds when needed, so why not block all calls by default?
About the "Faraday cage": Nothing fancy. Turned off microwave oven is enough. I also took a plastic bag and taped it over with 2 layers of aluminum foil. That also works. Though it still isn't perfect if I wanted to fully block all signals, but that's not the point.