mitmproxy cannot recreate the client's TLS, it uses python's TLS stack, so even with a real browser behind it, your connection looks like that of a python script. To solve this, I've created mitmcloak. It reads the client's ClientHello and HTTP/2 preface in real time and mirrors it with httpcloak (my other tls client library), no capture or fine tuning of the preset required.
H3 is mirrored as well though QUIC only reaches the proxy in wireguard/transparent/reverse mode as a proxy setting doesn't redirect UDP by default.
mitmcloak is an addon to mitmproxy, not a fork, so your setup stays exactly the same. Also it does not bypass certificate pinning, that's a different problem.