Thanks, great summary, this is very helpful for us in exploring a suitable NIP solution.
In my NIP101 implementation, the aliases between friends are not completely random(derived key). User A's alias private = shared key tweak added by A's private key, and User B's alias private = shared key tweak added by B's private key, so there is no need to change the alias key for friends here?
However, this is not suitable for large group chat scenarios. Group chats still need to change the group shared key to ensure forward/backward secrecy. I have a rough idea and am in the process of drafting it in the NIP :)