This is reasonable, but results in requiring three smart contract interactions per call.
I considered this, but I don’t want to introduce dependencies on external deployments unless they’re absolutely necessary. Doing so adds more complexity by requiring the network this is used on to have an ENS deployment, and requiring clients to know about it. I think we can do all the discovery on-contract here.
The problem with this approach is that it requires a lot more manual work from the contract author, duplicating what the Solidity compiler already does for us. The result will be a lot of boilerplate decoding bytes fields and re-encoding them; the approach outlined in my post avoids this by making Solidity do the work for us, and thus makes the code easier to read and more succinct.