Lo schema dovrebbe funzionare correttamente purché non ci siano troppi destinatari dello stesso messaggio. Non vedo come potresti renderlo molto più piccolo o più efficiente.
L'unico problema di prestazioni che posso vedere è che se si desidera eseguire la trasmissione, ovvero inviare lo stesso messaggio a un gruppo numeroso o, ad esempio, a tutti gli utenti del sistema. L'invio di un messaggio del genere sarà molto lento (ci sono stato, l'ho fatto). In tal caso, traccerei pigramente lo stato di tali messaggi globali, ovvero creerei la riga di stato per un singolo utente solo dopo aver aperto il messaggio. Ma se non hai pianificato una funzionalità del genere, direi di ignorare questo problema per ora.