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?
It most likely would get relayed. Pools do not want to harm their reputation by confirming a double spend transaction, so they will broadcast any transaction they receive to the rest of the network, and will not accept any transaction that conflicts with other transactions in their mempool.
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 would entail a lot of extra processing all for a few extra measly cents in a transaction. Normally a node will receive a transaction, and if said transaction is valid per the blockchain and does not conflict with another transaction in it's mempool they will accept said transaction, regardless of the attached fee. You are proposing that a (mining) node accept a never before seen transaction, not relay said transaction, and if a conflicting transaction is later received, to drop the original.
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.