use GUIDs for messages

this removes the need to get the cardinality of the set of IDs while
guarding against concurrent access.