--use-hold is pretty forgiving towards multiple targets. Holds will be created on the source.
--use-hold will create a hold on the latest synced snapshot with the name syncoid_${identifier}${hostname}. If there was an matching snapshot that was used for incremental syncing it will also release the hold of the same name on the matching snapshot. The hostname is the machine that runs syncoid.
For your use cases, there will be holds on A[a], B[b] for the B push/pull with names syncoid_${identifier}B, and there will be holds on B[a], B[b], and B[c] with the names syncoid_${identifier}C for the C pulls.
So then I would want to leave OUT any of the --*-sync-snap options. And the syncoid_${identifier}* snapshots would get automatically held and subsequently deleted as necessary?