I've read about the proposed Timejacking attack:
http://culubas.blogspot.com/2011/05/timejacking-bitcoin_802.html
There are a number of solutions proposed, but it seems like there might be a simpler solution to make the selection of peers more random.
As I understand it, the attack relies on an attacker being able to connect to a specific target node.
Wouldn't either of the following two solutions work?
Differentiate between input and output peers. Allow anyone to connect to you to receive information from you but only take information from peers that you connect to. This would make it very difficult for an attacker to have a large number of connections to a specific node because the node is randomly choosing which nodes to receive data from.
Continuously change connected nodes. i.e. every minute or so, disconnect from one connected node and find a new one to connect to. This would create a constant rotation of nodes that would make it much harder for an attacker to keep his/her connections to your node.