wallet treats transferred coins as "immature"

If I transfer coins from one address to another, the wallet won't attempt to stake them until 510 blocks have been found.

If I remove that 510 block restriction, I am able to stake the coins after just 4 hours have passed and all other clients will accept my new block.

This seems unfair to people using the "reference" client.

CWallet::CreateCoinStake() in wallet.cpp does:

    // Select coins with suitable depth
    if (!SelectCoinsSimple(nBalance - nReserveBalance, txNew.nTime, nCoinbaseMaturity + 10, setCoins, nValueIn))

which is where the artificial limiting happens.

To fix this, we would need a SelectCoins*() function which knows about coin maturity (and knows that transferring from one address to another doesn't affect it).