A hash tree would have been nicer, and parallel uploads would have been an extra bonus.
blake3 support has been proposed both in the OCI spec and in the runtimes, which at least for runtimes I expect to happen soon.
I tend to think gzip is the bigger problem, though.
Sure, and one can construct a perfectly nice tree hash from SHA256. (AWS Glacier did this, but their construction should not be emulated.)
Adding a rule that you hash the files in question in, say, 1 MiB chunks and hash the resulting hashes (and maybe that’s it, or maybe you add another level) is maybe 10 lines of code in any high level language.
The default storage backend does not keep compressed layers, so those need to be recreated and digested on push.
With the new store all that stuff is kept and reused.