Fees are way to big … How can i send everything from one big address and pay only 20$ usd fee [the default bitcoin fee, i see on some services, 5 usd]?
To spend from a bigger amount instead of several small, you must have it. If you fragment your bitcoin holdings sending small amount (for testing purpose or any other reason) to your other addresses, then when you would send it further, you should bind several of them, taking up more space on the blockchain and consequently paying higher fee.
You choose the fee amount, maybe you overpay it … anyway there is many factor that are involved in fee calculation so there is many ways to minimizing them, you can start here: https://en.bitcoin.it/wiki/Techniques_to_reduce_transaction_fees
I believe i pay per vbyte … but i want to send internally with low or no fees or something.
There is not “send internally”: either you can use Bitcoin testnet, that works with valueless testbitcoin you can have for free, or you use mainnet and your transactions pay as any other.
How big payment gateways like coingate/coinpayments/bitpay are doing this? They too create an address for every transaction …
When payment gateways make payments, they aggregate them: they aggregate multiple inputs (customer deposits) with multiple output (customer withdrawals) in a single big transaction that pay a very big fee, but which is always lower than they would pay with many small transactions; moreover they collecting 5$ you say from any single customer that is paid with the big transaction (and some service also from customers who deposit).