Why would the Message-ID (that you assign) not work for this purpose?
Perhaps the SNS notification doesn't include the message-id?
It is a bit painful for idempotency.
Perhaps SMTP could use an extension with a new (pipelined) command after DATA, so a client can retrieve the assigned message-id.
I wonder how common it is for message-id's to be overwritten. I must have run into this SES behaviour (along with other problems) when trying to use it as backup for outgoing mail for my mail server: My DKIM signatures include the message-id header, overwriting the header will invalidate them.