Secure communication between multiple peers on a public channel
Generate a symmetric key
Encrypt symmetric key using public keys of all recipients, and broadcast (or provide on request from a client)
Transmit all user messages encrypted under the symmetric key


This means you only have one copy of the message (but you do have lots of copies of the encrypted symmetric key).

Of course you need to solve the key distribution problem first, to ensure you're only encrypting the symmetric key using authenticated public keys.