How to accept USDT payments the right way? We are developing an e-commerce solution and consider USDT to accept payments.

At the moment as I understand we can generate many addresses (1 per transaction) with BIP32 spec approach. Based on Omni spec seems we will have to send money from each address to some another address (say master wallet) in order to be able to withdraw or act with the received amount in full.

While Bitcoin blockchain allows generating transaction with multiple inputs (so we can send 1 tx from many inputs) to one or more outputs this is not supported in Omni.

So the question is how to do it the right way? Sending from one address to another address will take fee in BTC producing additional costs (like 1M transactions mean 1M address X fee).
fill addresses with dust, like 300 sats, receive OMNI/USDT on those. as soon you received, send them to your hotwallet. it's a regular BTC transaction, so you need to have some balance to pay the fee. 

or, just do it on the etherchain as regular ERC20 token