First, to clear up a misconception: the current resolver has support for text records, independent of its support for DNS records. There’s no need to involve the DNS support for this.
Second, the default resolver isn’t the only usable resolver - anyone can write one.
This can be accomplished entirely inside the resolver, by adding a lookup table from namehash to namehash. The resolver can check this mapping before resolving a name. An even simpler approach might be to have a “CNAME resolver” contract whose sole job is to look up its internal table and then forward the call to the name it finds there.
This is much simpler than requiring clients to support this, because that would require updating every existing client to support this new record type and resolve names correctly. In the meantime, some names would resolve to nothing on some clients and to the correct record on others.