I never said C's language features are orthogonal. I said they should be. C is far from a perfect language, as your example shows.
Look at it from the opposite direction: if x->y didn't exist today, and the billions of lines of existing C code all used (*x).y, would you support a proposal to add a new x->y operator to the language? I doubt it.