Короткий ответ: варинты 1 и 2 нормальные, третий очень плохой.
Оптимальным будет первый вариант, потому что он повлечет за собой меньше всего кода. Просто добавится одно поле Адресат. Таким образом вы легко сможете добавить групповые чаты (кроме основого). вам не нужно будет синхронизировать и унифицировать между собой две отдельные модели сообщения, легко и без лишних кейсов можно сделать цитирование, не придётся писать отдельный код для реализации личных сообщений он удет тем же, что и при работе с общим или групповым чатом.