Hot take, #P2P protocols shouldn't use MDNS for peer discovery if they don't plan to use the OS provided APIs for it. Only one process can reliably bind the UDP port necessary for it and it quickly leads to conflicts. At the very least you should use a custom port to avoid conflicting with the OS.
@T_X Sadly I haven't done much reading on the IPv6 case but in the IPv4 case I think you could cheat by using the reuseaddr flag since it treats it as a different socket in the table used to track sockets internally but BSD had some difference in it where that wasn't the case. Sadly my memory is hazy since it's been like 2 years since I looked.
I think for local processes a single daemon that does the multicast stuff with a domain socket to talk to it from multiple processes is the way to go.