I think it is best to assume that every node in the network will have it's own server. It may be the case that many nodes run on a single server, but that's an easier problem to solve.
I think messages between servers come in two parts.
1) The Nodes
I'd use a global URI for this, e.g. FOAF marked up in RDFa. This would mean my profile would be
http://daisycha.in/foo and you'd have a tag something like <div typeof="Person" about="#me"> would probably be sufficient to give you a permanent node in the social graph.
2) The Message Semantics
This will typically describe the data involved in something like a status update, private message, wall post, friend request etc, from one node to another. A key element to make this portable is to allow the semantics to be marked up with a global namespace
3) The Transport Layer
As has been mentioned Atom and RSS1.0 are two candidates, but so are many other transport layers, such as HTTP POST, XMPP, UDP, multicast, PSYC etc. I dont think we need to be wedded to one particular format, nor are the options mutually exclusive. If the nodes are on the same server you dont really even need much of a transport layer. Pubsubhubbub is quite smart in that it delegates the transport to a trusted third party, which is a clever way to scale, so that's also an option.
Of the 3, I'm least concerned about (3), I think if we go FOAF (1) is going to be real easy to implement, and (2) will probably be the place where the devil is in the detail. I do say let's reuse the good ideas from OpenSocial, OStatus, FOAF, PortableContacts, Activity Streams, but I think our semantics should be compatible with linked data (which I would hope would lead to a W3C endorsement too), so may differ slightly to the official versions.