Looking into techniques this week, I am reasonably sure that the CID approach maps closely to that used by IPFS and the behavior is predictable, see IPLD's sorting described here: https://github.com/ross-spencer/learn-ipfs/blob/main/ipfs.md#ipld
Unfortunately though, I am not able to wrangle the same CIDs as IPFS using ipfs-cid, see:
Awaiting an update from that project and I suspect I am missing a parameter or something. The hashes we get are all consistently the same, so that's a positive, but it would be better if it matched IPFS and could be verified by that tooling.