So, from my testing thus far, it looks like with a static NAT it “just works”. I changed the child relay from a hide NAT to a static NAT, restarted the relay & client services. Then the parent relay sends child relay notifications on 52311/tcp to the public address of the child relay, the child relay receives it, and everything is reporting back in a timely manner.
It looks like DNS name resolution of the child relay, and the child relay’s reported IP address (which is still the private IP), are not involved at all.