currently when a message comes in, the State uses the timestamp to tell listeners which message to fetch, but this is flawed because a timestamp is not necessarily unique.
There are also some places where the GTK client makes the same assumption.
I think this now applies to all 3 clients.