Why are Transactions sending out randomly? I see in the sourcecode this two lines:

// Do this infrequently and randomly to avoid giving away
// that these are our transactions.


in the method ResendWalletTransactions. Why is this necessary? If a client send out his transactions every 30 minutes and the receiver put these transactions in his own queue and send this transaction list every 30 minutes to all his neigbors I don't see why someone should recover the own transactions of the client.

The full beginning of the method is something like:

void CWallet::ResendWalletTransactions()
{
    // Do this infrequently and randomly to avoid giving away
    // that these are our transactions.
    static int64 nNextTime;
    if (GetTime() &lt; nNextTime)
        return;
    bool fFirst = (nNextTime == 0);
    nNextTime = GetTime() + GetRand(30 * 60);
    if (fFirst)
        return;
Because it doesn't re-broadcast any non confirmed transaction, it re-broadcast only your own non-confirmed transactions. So you will be the only node on the entire network who is doing the re-broadcast every exact 30 minutes and based on this anyone can get what IP is originating that transaction.

A few lines below your code example you find this:  

BOOST_FOREACH(PAIRTYPE(const uint256, CWalletTx)&amp; item, mapWallet)
{
...
}


This will loop on the transactions of your own wallet (mapWallet), not all the network transactions.