As per the site-to-site setup instructions, all I had to do was modify the AllowedIPs field. Now I can reach the C devices with ICMP and UDP packets. Many thanks all around!
However not all is in order.
12:02:37.056788 IP 10.8.0.1.34808 > 192.168.8.100.3232: UDP, length 48
12:02:37.496367 IP 192.168.8.100.3232 > 10.8.0.1.34808: UDP, length 37
12:02:37.496835 IP 10.8.0.1.34808 > 192.168.8.100.3232: UDP, length 70
12:02:37.983403 IP 192.168.8.100.3232 > 10.8.0.1.34808: UDP, length 2
12:02:38.488380 IP 192.168.8.100.55281 > 10.8.0.1.59773: Flags [S], seq 391410959, win 5744, options [mss 1380], length 0
12:02:38.489329 IP 10.8.0.1 > 192.168.8.100: ICMP host 10.8.0.1 unreachable - admin prohibited, length 52
12:02:41.383427 IP 192.168.8.100.55281 > 10.8.0.1.59773: Flags [S], seq 391410959, win 5744, options [mss 1380], length 0
12:02:41.383986 IP 10.8.0.1 > 192.168.8.100: ICMP host 10.8.0.1 unreachable - admin prohibited, length 52
10.8.0.1 is device A. 10.8.0.5 is B. 192.168.8.100 is a C device.
The code on host A reports that connection to C is established, that authentication succeeded, but then says "No response from C".
I realize this is getting into the specifics of some code you know nothing about, but my question is whether the packet at 12:02:41.383986
could be indicative of a network issue rather than a software issue?
EDIT1. More clues. A and B can ping each other successfully, but B cannot establish a connection to a random port on A. netcat on B reports that "host 10.8.0.1 is unreachable" which is odd and different from host A rejecting packets that actually arrive.
Here's the dump from host B while A is trying to talk to C:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wgclient, link-type RAW (Raw IP), capture size 262144 bytes
12:27:44.651564 IP 10.8.0.1.56036 > device-C.3939: UDP, length 48
12:27:44.931613 IP device-C.3939 > 10.8.0.1.56036: UDP, length 37
12:27:45.092508 IP 10.8.0.1.56036 > device-C.3939: UDP, length 70
12:27:45.428258 IP device-C.3939 > 10.8.0.1.56036: UDP, length 2
12:27:45.935051 IP device-C.55284 > 10.8.0.1.28485: Flags [S], seq 2653498802, win 5744, options [mss 1380], length 0
12:27:46.090593 IP 10.8.0.1 > device-C: ICMP host 10.8.0.1 unreachable - admin prohibited, length 52
12:27:48.821844 IP device-C.55284 > 10.8.0.1.28485: Flags [S], seq 2653498802, win 5744, options [mss 1380], length 0
12:27:48.978880 IP 10.8.0.1 > device-C: ICMP host 10.8.0.1 unreachable - admin prohibited, length 52
EDIT2:
Found it. Firewall issue on A. iptable rule order.