This addresses ENG-10208.
We're currently always using useGetLatestMessageEdit here, which results in a lot of SQLite queries on my app in production.
The issue is that when the most recent message is a reaction, we end up needing to query the message it's reacting to from SQLite.
A naive solution would be to check Redux first, but that wouldn't work fully because there are many thin threads for which I only have the single most recent message locally. This is because on login, the keyserver only returns a single message for threads where there haven't been multiple messages in the past 2 weeks.
To address this, I special-case thin threads in this hook. I also introduce a local cache for message author fetches for thick thread, since a message's author never changes.
Finally, the function signature here allows reactionMessageSpec to be able to avoid returning a Promise in most cases, which allows related logic to short-circuit and avoid overwhelming Hermes with Promises, which has happened a couple times.