"Hey, add me on telegram, my username is @andrewzah". This isn't a hard problem.
I don't know why we decided apps hoovering up our contact lists in exchange for convenience was so important. For an app that touts itself as private and secure, I still had to explain to my brother why giving it his contact list wasn't a good idea.
I just don't see it as a casual thing the way the target users of these apps apparently do.
I want to explicitly control, per any form of communication, each person who is to be made to know that I operate that form of communication and whether or not that form of communication with me is open to them.
I do not want to open up a new app and have a large populated list of past acquaintances appear, I absolutely do not want to appear in such a list, I would rather not use a given app than risk having someone show up messaging me uninvited.
This is a privacy trade off. Some services chose to keep this list. Signal chose to use phone numbers.
This is very different than Signal doing it automatically when I join.
B. You can exchange identifiers with people whom you want to communicate it just like with any other non-phone-based system: "Hey I'm @username on signal", "Cool, I'm @username2" - composes well with method A.
Solution B ties in to a bigger argument I won't address
the contact prepopulation isn't even that useful. telegram in particular seems to drop notifications if you don't exclude it from power management on Android. if you don't know the user has notifications turned on and has jumped through the hoops to make them actually work, you may as well send messages into a black hole. this is part of why I never assume it's a good way to contact someone without explicitly asking.