Isn’t it sufficient to handle batching at the application level?
For example, the ckBTC minter caches retrieval requests, which makes it possible to handle multiple requests within a single Bitcoin transaction.
Is there a reason why this approach wouldn’t work for your use case?