O que você está pedindo é basicamente agrupar por segmento em vez de remetente. Threads podem ser iniciadas entre duas pessoas, independente de serem emissor/receptor.
Para fazer isso, recomendo alterar sua estrutura de dados de maneira semelhante ao que foi discutido aqui:Existe uma maneira mais simples de alcançar esse estilo de mensagens do usuário?