Another alternative approach could be something similar to what Skype allows, that is, renaming people in your friends list. I see it more as adding personalized nicknames rather than renaming, but basically, for the people you know, you could add your display names and those would persist regardless of nickname changes. You would still use @OriginalNickname for messaging and any other interactions, but since you have performed the rename operation yourself, I think this will be completely clear, or at least with a warning given before doing so.
Of course, in Skype, you only have your contacts to communicate with and can't access the entire online list for obvious reasons, but on the Playroom, I suppose that this could be allowed for people outside of friends list as well.
About the display name in the original idea, this isn't bad as well and I don't think it will be too complicated, here's why:
Basically, the display name can be explained in a very simple way. It is read only, you never use that one as a user, it's there only as user B telling user A who they are.
The username however is their handle, and that is the one you always use. Invitations, private messages, permanent messages.
By the way, Twitter has the same concept, so it's not completely unknown. You have your handle, @qcsalon for example, and your display name, or screen name, which is the one displayed for all users. Of course, Twitter allows you to change both of them, but in this case I indeed prefer the username to be static.
Finally, we could simplify this even further, even if it may require a lot of redesigning. If my username is Nikola, and my display name is Example, if you type @example by mistake, the Playroom could automatically convert that to Nikola, perhaps with a warning given so people get used to it faster. In any case I think nobody should be allowed to have a display name that is the same as somebody else's username to prevent abuse. The display name should be an optional parameter, if it's not specified, either during the account creation or in settings, it's the same as your username.
About finding somebody's username quickly, I think this one is pretty simple too. In the online users list, if you find somebody and press ctrl+m to send them a PM, this will do @username instead of @displayName.
I guess the only problem I see with this idea is that we have basically completely eliminated the original possibility you talked about, that is, if somebody wants to change their identity by changing their nickname.