Having a clear mind again, I'm wondering why I didn't suggest yesterday to simplify the system by, as DaveG suggested, taking the full name including family name as unique identifier. But not only first and last name but allowing one or two middle names (simply by allowing 2 or three spaces as characters in the name). That should make everyone happy

The idea with the nicknames can also be solved without numbers or counters in first hand:
As stated in the initial post, you have an optional nickname field in the CC. If you leave it empty, the birthname is taken as nickname.
If you fill something in, it is treated just as a regular forename is treated now, it has to be unique.
Ingame you always have the nickname on the label and the birthname in the chardesc.
But then again, you can modify privately the nicknames like I said, by rightclick on the buddylist. And there one could allow all characters, including numbers and other symbols.
It wouldn't matter to anyone if you privately name anyone "jo1" because "jo" alone isn't unique.
The name resolution works just as proposed, using internally the birthname (or resolved PID) as identifier. Your client could resolve the given identifier (Birthname/PID) to the private nickname again. With that you don't have "Johnny of Hydlaa says:" in the chat, but, if you privately gave him the nick "joh"; "joh says:".