WhatsApp wouldn't keep the private keys. That being said, this system could still be hacked - when the clients exchange public keys, you insert yourself in the middle, provide your own public keys to each client, and mediate between the two clients, which gives you access to the unencrypted messages.
True, but I bet that the NSA could force WhatsApp to issue certificates for fake keys. Obviously can't do that without being noticed, but they could still use it to spy on specific users if they wanted.
For high enough value targets the NSA is probably happy to compromise the endpoints.