If one calls `fundrawtransaction`, the change address will be retrieved from the keypool, though, this key/address will always be returned to the pool, leading to the problem that the next `getnewaddress()` call will restult in the same key/address.

Either we remove the auto-change-address (users would need to call `getrawchangeaddress` first [current best practice anyway]) or we add a call to keep/mark a specific key/address as change (after one have sent the funded raw transaction).

Reported by @NicolasDorier on IRC.
blockId.SetHex(request.params[0].get_str());
        BlockMap::iterator it = mapBlockIndex.find(blockId);
        if (it != mapBlockIndex.end())
            pindex = it->second;
    }
    if (request.params.size() > 1)
    {
        target_confirms = request.params[1].get_int();
        if (target_confirms < 1)
            throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter");
    }
    if(request.params.size() > 2)
        if(request.params[2].get_bool())
            filter = filter | ISMINE_WATCH_ONLY;
    int depth = pindex ? (1 + chainActive.Height() - pindex->nHeight) : -1;
    UniValue transactions(UniValue::VARR);
    for (map<uint256, CWalletTx>::iterator it = pwalletMain->mapWallet.begin(); it != pwalletMain->mapWallet.end(); it++)
    {
        CWalletTx tx = (*it).second;
        if (depth == -1 || tx.GetDepthInMainChain() < depth)
            ListTransactions(tx, "*", 0, true, transactions, filter);
    }
    CBlockIndex *pblockLast = chainActive[chainActive.Height() + 1 - target_confirms];
    uint256 lastblock = pblockLast ? pblockLast->GetBlockHash() : uint256();
    UniValue ret(UniValue::VOBJ);
    ret.push_back(Pair("transactions", transactions));
    ret.push_back(Pair("lastblock", lastblock.GetHex()));
    return ret;
}
UniValue gettransaction(const JSONRPCRequest& request)