hashing each message separately
You can mine a transaction. Then, it is equivalent of "hashing each message separately". Some example: 000000000fdf0c619cd8e0d512c7e2c0da5a5808e60f12f1e0d01522d2986a51. In this case, no blockchain is needed, but only miners can send valuable messages, most people can only send CPU-mined messages in this case. It is just a hashcash, you can use that as your antispam filter in e-mails.
implementing a hidden chain
You can hide all commitments of any arbitrary size in a single signature. Just use your r-value as a Taproot public key of your commitment. It can be very simple: you can just make any Taproot address, by using some random public key, and creating all of your commitments inside your TapScript. Then, you can put your 32 bytes in a signature, and by the act of making it, you can prove that you control the relation between your public key and your signature nonce.
Later, it is technically possible to validate your commitment, just by taking r-value from your signature, and checking if some commitment can satisfy that public key. If it can, then your commitment is valid. Also, you can sort commitments in your TapScript tree, by putting all hashes for all leaves in ascending order. If everything is always sorted, then you can create an SPV proof, just to show that some spending path is not a part of your TapScript. Then, in your own network, you can reject unsorted commitments as invalid, in this way you can write conditions that would take two leaves, to prove that no commitment is between them.