I figured this out! I think it was a combination of two things.
First, at some point since I'd last used the VPN, I guess I'd added a AAAA record to the domain my Wireguard endpoint was CNAMEd to... however the AAAA is the IPv6 address of my server, not my OPNsense box. Creating new A/AAAA records pointing directly to OPNsense instead of the CNAME seems to have fixed it.
I think another issue, which made some of my problems intermittent, was that I was trying to do Outbound NAT on the Wireguard IPv6 network, but I didn't even have an IPv6 address on my OPNsense's WAN interface. Adding that seems to have fixed it (but I don't really need the IPv6 NAT, so I disabled that).
First, at some point since I'd last used the VPN, I guess I'd added a AAAA record to the domain my Wireguard endpoint was CNAMEd to... however the AAAA is the IPv6 address of my server, not my OPNsense box. Creating new A/AAAA records pointing directly to OPNsense instead of the CNAME seems to have fixed it.
I think another issue, which made some of my problems intermittent, was that I was trying to do Outbound NAT on the Wireguard IPv6 network, but I didn't even have an IPv6 address on my OPNsense's WAN interface. Adding that seems to have fixed it (but I don't really need the IPv6 NAT, so I disabled that).