When you do so, the app might say, "The person you just met claims to be Joe Schmoe, do you want to vouch for them?" If you approve them, they can message you and vice versa. A friend of Joe's can see you in his friend list, and try to message you, and you can accept it if you trust Joe, but they won't be a first-tier friend until you meet them. Your tweet-like posts can be seen by anyone, or your friends only, or people within N connections of you, as you prefer.
I think it could be implemented in a distributed way, with no central server, if some proportion of the users are willing to serve their traffic from a VPS rather than just their phone. If someone cheats (uses a fork of the app that lets them "friend" people they haven't met, create fake identities, lie about their friends graph, etc), it wouldn't affect you unless you trust them. Over enough time and with enough use, this might be good enough to figure out whether someone distant from you (e.g. someone you're about to make an Ebay purchase from) is using their real identity or not, as the "main" part of the overall friend graph that a real user with a lot of friends is connected to would be structurally distinguishable from the subnets created by cheaters.
(This is not a cherished idea I've been working on for years and am prepared to defend, just a random idea I thought I'd post in case it sparks an idea for someone, so be polite in ripping it to shreds pls)