I have used tinc [0] for this scenario successfully for 15 years. It not only supports full mesh but automatic full mesh. It will use UDP for the data stream when possible, supports RSA and Ed25519, and supports transporting either IP or Ethernet frames.
I used the mode where it supports Ethernet frames to merge the VLANs of two datacenters across the WAN (with some additional ebtables to prevent some kinds of frames) to add the ability to migrate systems from one datacenter to another during a partial outage.