That’s very normal regarding the crash trying to join #matrix:matrix.org. You need much higher specs and need to be using Postgres database, MySQL probably won’t handle it.
Can you post a sanitized version of your homeserver.yaml so we can take a look at your config?
Also are you running docker or something else?
To me it sounds like you don’t have a DHCP problem at all, the issue is no website can be resolved when your DNS is down (PiHole).
You really have two options:
or
https://stevendiver.com/2020/02/21/isc-dhcp-failover-configuration/
Personally, I like to keep the wife happy so I have option 2 at home, that way the internet never goes down when I tinker.
Edit: Didn’t notice you said your router can’t issue out two DNS servers. I’ve never heard of that.
You will need to run a reverse proxy on one of your VMs ( I use Caddy, it’s very simple), and forward port 80/443 to your reverse proxy.
Within your reverse proxy, you can tell it what port corresponds to which address and it will send you to the right service.
This is obviously an oversimplified answer, but there are many Caddy guides and I can help you with any specific questions.