DNS is needed for a reason though, for making URL useful even after IPs change.
People following each other can always find each other, but for public keys to be useful beyond that as URLs, they need to be resolvable in a censorship resistant way and not depend on relays to be that layer, rather use the biggest overlay network in existence now, and never assume that relays list records will be stored for long.
Basically, publish records on Mainline BEP0044 and keep republishing them periodically.
I have working code showing how that works and scales very nicely github.com/nuhvi/pkarr
Example:https://pkarr.nuh.dev/?pk=o4dksfbqk85ogzdb5osziw6befigbuxmuxkuxq8434q89uj56uyy
Bittorrent DHT is simple enough this can be implemented in any language, currently trying to reimplement it in Rust