Combining a Bitcoin transaction with one address holding USDT, but no BTC and using another address with BTC to pay for the fees? I have a Bitcoin address that contains USDT, but NO BTC in it. So I cannot even send the USDT out. But I have another bitcoin address that does have BTC. Can I somehow combine these 2 addresses where I can pay the btc from one address that also pays to send out my USDT? If this doesn't work, that means I have to send BTC to the USDT account in order to send it back out?

What application supports the Omni layer with batching to make this work?
You don't need to do anything special to make this work. The omni protocol allows you to have a second input to the transaction to pay for fees. 

When you received the USDT, your first address should have at least a little bit of BTC in it. If you have already spent that, you will need to transfer a little more.

If not, you can consume that tiny input, and an input from a different address, and make a regular omni output + change to any address.

Unfortunately, to my knowledge, no omni wallet supports this kind of transaction, so you will have to build the rawtx using Bitcoin Core or Omni Core and sign it appropriately.