> then proceeding using the shared key with even the best of schemes
Unlike with your "spy" scenario, this situation is in fact what TLS 1.3 builds initially and it's not useless at all, nor is the resulting link unauthenticated.
1. First Alice sends her fresh parameters to Bob
2a. Then Bob sends his fresh parameters to Alice
2b. Alice and Bob now have all the DH parameters and they now have a shared secret X
2c. Bob calculates a Digest of a transcript of the entire conversation so far and sends this Digest, encrypted with X to Alice, he can send this alongside the parameters if he wants
3. Alice also likewise calculates a Digest and sends the encrypted digest to Bob
Both Alice and Bob now have a shared secret and have an authenticated (because they've seen the other party's view of the conversation in the digest and confirmed it matches their expectation) communication channel which they can use. They don't learn each others' identity but, of course, it is easy to additionally offer this as part of the same protocol and HTTPS does so in one direction in the typical case.
Edited: Renumbered to clarify that only three messages are sent, parts 2a, 2b and 2c are actually a single message from Bob to Alice