Great writeup. Thanks for that. Just to give some feedback where I'm at in the process:
Phase 1: So with my new Pixel 9 w\ GrapheneOS, I initially bought a SIM and phone number for cash from Verizon. Location Services are turned off, except for apps that absolutely require it, like my anonymous Waze account. ProtonVPN obscures the IP address, but as you point out, anyone with my phone number can determine my location through triangulation.
Phase 2: I ditched the Verizon SIM and bought at esim from silent.link. The IP addresses they assign me are out of Warsaw, Poland of all places. But again, my VPN obscures this and displays a US-based IP to service providers. This works really well, but now I don't have a phone number or access to SMS.
Phase 3 (upcoming): I'll try getting a phone number from the Canadian outfit jmp.chat. The nice thing about these guys is they just forward inbound calls and SMS over XMPP. This is ideal because, and please correct me if I'm wrong, anyone investigating my phone number via jmp will hit a dead end in so far as jmp knows nothing about me other than the VPN IP address I use connect to their XMPP server. At that point, it seems the link between phone number and physical location has been broken; Jmp doesn't know my IMEI, and Silent.link doesn't know my phone number.
Whether or not I've introduced so much latency as to make phone calls impossible remains to be seen. I'll let you know if I get Phase 3 up and running.
One thing you mentioned that's given me pause though, is the self-hosted XMPP server. That would certainly cut out some latency if the server is near you. But it seems like by doing this you've tied a public IP address to yourself. I can think of some ways to obscure that address using some complicated forwarding, but wouldn't one be better off using a public XMPP server that's used by tons of other people rather than self-hosting?