calculateChunkIDBasedOnTimecode sounded promising, but on closer inspection, does not appear to do what I need (“It will not sync chunks between servers which I think you are looking for.”).
I gather there is a hook which allows custom configuration of chunk IDs for HLS (see List chunks on an HLS live stream), which might solve this problem for HLS. Is there anything similar for HDS?