If I understand correctly, when miners try to produce a block, they get the transactions from node's mempool, where it is put if it satisfies the transaction validity criteria. For most of the nodes the source of the transaction is another node, via the gossip network.
Since a miner can not hoard transactions and try to create block, they is a risk that while miner A tries to mine a block containing transaction TX1, some other minder B is quicker to mine a block that contains this transaction, thus putting all the work of miner A to waste.
So, it seems that miner has incentive to pad his block with transactions that are unknown to other miners. It's not hard to create a valid transaction that sends coins from one address to another address, both owned by the miner. So, if a miner puts such transaction in his block, there's now lower probability to lose the race for the next block. Heck, he could create block that contains only such "private" transactions, thus getting income only from the coinbase transaction.
What feature in the bitcoin algorithm/network prevents miners to do so?