Nibor,
First of all: as for the 0.005 payment/bribe (
) I already thought about something like that in the past, but I just don't see how to make it work. First of all, if I add an output less than 0.01 BTC to my tx, then it's considered dust and cannot satisfy the AllowFree requirement. Sure, sometimes it gets propagated without a fee, but there's no guarantee if any of the outputs are less than 0.01. And most people
hate paying transaction fees...
On the other hand, if your fee is >=0.01, the person can do it, as long as they don't mind breaking off some of their change output for you. But for whatever reason, despite being practically insignificant, people are really averse to paying such fees. I think it's fair for your service, but admittedly, the Tx construction algorithm has to be modified to include an extra output just for the forwarding node.
SelectCoins is the algorithm that takes all the unspent TxOuts that you can spend, and figures out a "good" subset of them for a desired transaction. For instance, I have 5 unspent TxOuts to my wallet {10.3, 0.003, 0.148, 29.0, 2.2}. If I want to send someone 2.5 BTC, what is the best way to do it? Or 0.002? Or 31? etc. There's actually too many solutions, and a lot of them require fees (if a lot of outputs are used, and/or young, small outputs), or link a lot of addresses together on the input side (since all addresses on the input side are clearly owned by the same person, you want to limit how many are used).
One of the criteria for anonymity of the transaction is the outputs -- usually there's two outputs: reicipient, and change-back-to-self. The sender usually picks a new address for the change part, which means, if both outputs are the same, then it's not actually clear which is the recipient and which is change. If you're concerned about someone tracking the flow of your money, having two outputs, one of 10.00 and change of 1.93283, it's pretty obvious which is which. However, in the case of the tx I sent you, it's got 20 outputs of exactly 0.5 BTC. An investigator who really wants to know who I'm sending money to, would now have to investigate the pool of 20 different addresses to find the actual recipient since there's no information to distinguish them in the tx itself. Most SelectCoins algs could not come up with this Tx on their own, but I wouldn't mind figuring out how to get mine to do it