DNS? crt.sh? Certificate Pinning? Apply this only to non-routable IPs? Apply this only to certain TLDs, such as: .local .lan .personal
There are many options.
Also, how would this be any worse than visiting a plain HTTP site instead?
The local thing would work, but of course only for local hosts.
It would not be worse than using plain http and my personal opinion is that visiting a plain http site should have the same UX as visiting a self-signed one.
It would also specifically allow non-identity locally issued certs for .local, .lan, .hobby etc...