this is a really interesting project: http://bit.ly/z4Pjw

they used a model that i've thought about, too. sender and reciever in the swarm don't know about each other directly, all traffic is rewrited through peers. i got instead a little more in the detail and would have the sender dynamicly connected to the last known peers before the reciever. this would also assure that the connections trough the swarm would change on and on again so that no 'synthetic bottleneck' and or "big route hosts" will appear.