After upgrading to linux-aarch64-5.15.5, wireguard simply does not finish the handshake with the server and is stuck. It works just fine with the older version (linux-aarch64-5.15.1). Using an alternative kernel like linux-rpi-5.10.90 fails too.
The output of wg show looks like this:
$this->bbcode_second_pass_code('', 'peer: <redacted>
endpoint: <redacted>
allowed ips: <redacted>
// latest handshake: X seconds ago: this line is missing
transfer: 0 B received, Y KiB sent // no data received, which means server is not replying
')
Solved: Looks like the upgrade from systemd 249 to 250 is the culprit. More details here: https://github.com/systemd/systemd/issues/21964