This problem would not exist if clients (eg. web browsers) supported SRV record lookups. The SRV fixes a missing abstraction by mapping names that users see (eg. foo.com) to actual server names (eg. webserv42.foo.com). Without SRV record lookups, web browsers must look up the bare domain, and expect to get an address, for this to work. CNAMEs were not designed to be used for this kind of situation; it's a square peg in a round hole.
This isn't due to the inflexibility of DNS; it's due to the inflexibility of clients that ignore newer advancements in the protocol.
Of course, this does mean that web hosts are stuck.