In order to visualize the manner in which Bitcoin blocks and transactions "flow" through the network, they should be viewed as propagating through the P2P network. Connected peers (nodes) notify one another of new transactions and blocks, and peers can then ask for all of the transaction or block data (inventory).
Normally, if a miner node receives two transactions spending the same inputs, both transactions will be considered invalid and discarded.
In the double-spend example you give, where the double spend txns go to different miners, the transaction that is confirmed first, i.e. included in a valid block first by a miner, is considered valid by the network - provided the transaction and block is valid in all other respects.
The remaining transaction (even if it was broadcast first) will be deemed a double spend attempt according to the network's consensus rules because it spends the same outputs (UTXOs) as a transaction that has already been confirmed. Yet, since it was confirmed in a competing valid block (as per your example), this second (chronological) block will most likely be orphaned.
During the propagation of newly mined blocks they are subject to validation by peers. Peers (and, therefore, the network) will build consensus on the validity of two (or more) competing blocks and likely choose one - as described in the previous paragraph. In some cases, the chain may temporarily fork until subsequent mined blocks allow consensus to converge, in which case one chain will be orphaned in favor of the consensus branch.
It sounds overly complicated when discussed in this way, but the ever-shifting state of consensus eventually leads to convergence. This is why the blockchain is described as "slow" and "cumbersome", as it builds consensus on the validity of every transaction and every block.
There is a useful discussion of double-spending in this related question.