We were generating new IDs every time we tried to send composable messages - this was causing issues when we retried a message. To fix that, we're changing an approach so that a retry yields the same ID as the first attempt.
Note: this should've introduced a util function that transforms a local ID into the ID. Currently, this would introduce an import cycle. Adding this function can be safely performed in D14613.