mDNS solves this. It may actually work out of the box. Try ssh’ing into your-device-name.local. If that fails, check your devices’ names and if they have Avahi/Bonjour/mDNS enabled.
Something like Tailscale will set up a VPN with hostnames and IP addresses for you (and you can host your own entry server if you don’t want to use the cloud stuff). That’ll work across networks. It’ll also add overhead and it’s probably overkill for your use case, though.