There is not and will never be a solution to the problem of horizontally scaling an application and database designed jointly for a single-box ACID RDBMS. You have to compromise something to get the scaling.
CitusDB for example handles this by allowing FKeys between tables that share the same partition key. However it's also not -as- scalable as Vitess or as georeplication friendly but for many uses that need "more than a single box" is probably enough scalability.
And the reason why is basically “physics”. The speed of light is pretty damn slow all things considered.
Until we find ways to make all the servers in the cluster have latency measured in something like picoseconds, something is gonna have to give.