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
What's best way to scan addresses without submitting so much request (for each index) to blockchain explorer to scan funds?
You should not build your service to trust some third party blockchain explorer service. If you are handling payments from customers, you should be running your own node, and looking to it for confirmation of payments.
How much UTXO each address should have to consider generating new address to avoid address re-using?
Preventing address re-use by itself means that an address should not be used more than once. So unless, someone sends you two outputs to the same address in the same transaction (highly unlikely) you are going to end up with one UTXO per address. Preventing ...
Maybe my code bitcoin-in-tiny-pieces can serve to follow all the steps: each script is devoted to just a step of the process and has the minimal code to fulfil it.
Python is easy to follow if you're not a programmer, and there are comments that point to the documentation sources, though for example going from private to public key is all maths.