I had a crazy idea last night about how to make Shadowsend messages invulnerable to future decryption by other than the recipient.
The weakness is that all nodes on the network receive all messages. So the spy could be receiving and recording all of them, unable to decrypt them now, but in 10 or 1000 years from now, maybe.
A one-time pad is a very old, low-tech, and unbreakable for of encryption, unbreakable because the key is longer than the message and using any of the possible pads can make the coded message decrypt to any clear message you want. The weakness there is that the OTP is a private key and both parties have to have prior contact to exchange the key.
So what if... when one wallet sends a Shadowsend message to another, it also send a OTP (also encrypted with Shadowsend), to the recipient along with a few hundred other random nodes, and the OTP is used in addition to the public-key encryption to encrypt and decrypt the message? Nodes other than the intended recipient would ignore it just like any other Shadowsend message. The chances of the spy intercepting both the message and the OTP are low, and he would need to defeat the public-key encryption on both to read the message.
In addition to this, all online wallets would randomly send out random OTP's to random nodes on the network, so most of the pads the spy would be intercepting would be garbage but he would have to decrypt them all anyway, not knowing which ones are garbage and which can be used to decrypt a real message.
Of course users exchanging very sensitive information are already able to send each other a pad ahead of time using Shadowsend, but having random wallets also doing it randomly would add a twist that makes it much more complicated to defeat.