Usernames have to be unique, so if you don’t want to use email address, can I suggest using the id of the user record as part of your composite instead - that is guaranteed to be unique.
If you wanted to write code, I guess you could always check the generated id against those that already exist, and add a 1 for the second one, 2 for the third etc.