I made a study of the actual asymmetry I'm seeing with NIST clocks, outside the NTP protocol. The enclosed chart is the result.
What's going on here is, an external program compares each peer offset to the System Peer offset. For the purpose of the study, whatever difference it finds is assumed to be caused by asymmetry, because these are NIST clocks. The external program then eliminates asymmetry, by introducing either outbound delay or inbound delay.
For example, consider a circuit where the outbound is 10 ms and the inbound is 20 ms. NTP calculates the round trip as 30 ms, half of the round trip as 15 ms, "discovers" that the peer timestamp taken at T+10ms is 15ms - 10ms = 5 ms fast, and excludes it from the cluster.
Now the external program introduces 2 x 5 ms = 10 ms outbound delay. This eliminates the asymmetry and the peer joins the cluster. But from time to time, a peer's asymmetry changes abruptly. So the program is run every couple of hours, recalculates, and rebalances.
You can see on the chart that the peers are not in lock step. Single peers are going wrong at random times. This is not what you would expect if the asymmetry is due to a simple problem either at my end or at their end. So the cause of the observed assymetry has to be somewhere between.