No transport keys for contact who has deleted us and been reintroduced
If a contact has deleted us and then been reintroduced by a mutual contact, we end up without any transport keys that can be used for communicating with the reintroduced contact.
When deleting us, the contact will have removed the keys that we previously shared. When re-adding us, the contact will have stored the new keys created by the introduction, but we fail to store these when a ContactExistsException is thrown:
The contradictory comments at lines 457 and 472 above suggest some confusion about the right behaviour in this case. To communicate with the reintroduced contact we should store the new keys, which will be used in preference to any existing keys as they're newer. In other words, the call to addRotationKeys() should be moved outside the try/catch block.