

Oh yeah, there’ll be some overhead if you’re running Wireguard on a router. Hitting your router’s public IP won’t go out to the internet though - the router will recognize that it’s its IP.
It’s common to run Wireguard on every computer/phone/tablet/etc where possible rather than just on the router, since this takes advantage of its peer-to-peer nature. For home use, that’s how it was originally designed to be used. Tailscale makes it a lot easier to configure it this way though - it’s a bit of work for vanilla Wireguard. Tailscale does support “subnet routers” if you have any devices that you want to access over the VPN that can’t run Tailscale.
There’s no reason your media server needs to be directly exposed to the public internet. Use Tailscale. Get everyone that uses it to sign up for a Tailscale account, and add them all to your Tailnet.
Tailscale will perform better than a Cloudflare tunnel because it’s a direct connection between the two peers, whereas Cloudflare tunnels route through Cloudflare.
Tailscale does have relay servers, but they’re only used in very rare cases, if both peers have very strict firewalls. Almost always, the connection between two peers over Tailscale is a direct connection, so there’s no extra latency (other than some small overhead for the encryption)
You could use Wireguard and manually configure it to be in a mesh config, but Tailscale makes it so much easier. I’m a big fan of their product.