Since segwit requires 95% signaling to activate, most or all miners will be segwit anyway.
If you're asking if today, would it be possible to send your transactions to a pool signaling segwit, the answer is no. You don't have the power to do that.
Whoever mines the block decides what transactions to include.
technically it can be done if you set your node to only connect to a pools IP adress of the ones you prefer
or you know the pools API to manually 'PushTX' the transaction to only the pools you prefer
why wouldnt the tx get relayed onward?
i dont see how they are at risk of minning a double spend.
if the TX they are withholding from the rest of the network, at one point becomes a double spend, they simply drop it.
This has the potential to result in lower overall transaction fees because the public transaction may have a lower tx fee attached, and if the private higher tx fee transaction was broadcast, then other nodes would have rejected the conflicting public transaction.