Is there need for message authentication if a public key is transmitted and then used to encrypt a symmetric key?
Notice: This answer assumes the user doesn't encrypt the initial contact because I misread that part. Will update accordingly in due course.




  Is there even need for the hash in the server response so the client knows it hasn't been MITM'd (because the server has proved it decrypted the client's public key)?


Sharing the hash of a key is a bit risky in general so I'd say shy away from doing that. In your case there's another reason why you shouldn't: You are correct about MITM, anyone can generate a key and send it back to the user. 

The server must sign its response so the user is sure of its origin.


  Can an adversary which doesn't know the server's private key ever change the RSA ciphertext so it passes the OAEP check routines?


The probability of that happening is negligible. Even if it does your security doesn't depend on OAEP's sanity checks, it depends on the strength of RSA. See next for details


  [...] will end up using a garbage symmetric key—is this dangerous i.e. could be exploited in some way?


No. There are two ways to spot the problem: One is by signing the message - if there's a mismatch between the signature and the message, you know you can stop there. 

If there's no signature, the plaintext should conform to some format (which could be a checksum encrypted along with the plaintext). If your application decrypts an altered message which does conform to the format, you're either very lucky or the app doesn't bother checking, which would make it absolutely worthless.

In your case, let's say the client gets a garbled symmetric key. The server (conforming to the protocol) would expect the client to say Hello! and instead would decrypt something along the lines of £Gh^T-31j3mqjgeY, which is a strong hint that something's amiss.


  is my simple plaintext hash-based authentication secure?


No. See the answer to the first question. Anyone watching the user will see his public key coming along, generating a new keypair for every server won't help at all.