Unless the attacker has over 50% of the hash power, there is no reason for him to not broadcast the block since his block chain is just going to be overtaken by the rest of miners.
Not needed. All you need is a node with an extremely good connection to many network peers.
When you find a block, you hold it and keep it to yourself. Next, when someone mines a block, your very well connected node will be one of the first to hear about it and you can broadcast your own block instead. If your block somehow gets propagated faster than the other pools (ie. Being directly connected to large mining pools), they will build on top of yours. If another block is found on top of yours, you don't lose anything.