I have experienced this before as well, watching a basket of trade closes being "averaged down" because of the "sequential" orders closed and thus lowering the profit of the trades in the basket. - BUT this was due to the way the script I used there was programmed (sequential order closing by making use of a loop which checks if there are still open positions, then closes the next order, then checks again ... until the condition "any orders open?" returned that all orders are closed - this is a BAD way to do it) - because ...
You actually CAN close all orders at once in MT4 (and I was surprised when I discovered this, because I thought just like you that closing all at once is not possible, which is not correct) - at least for your discretionary trading, there's even a free script available - https://www.mql5.com/en/market/product/2784 - In the description it offers a different version with parameters as well (e.g. close only buy or sell trades, close only trades of a particular currency pair etc.)
This of course is only a solution to one of the points you made, but it's a solution. - Maybe the developer might even explain to you how the script works, so you can implement this is any MT4 EA's as well.
Hope this helps?
[Edit: My apologies for linking a script without checking it before. Actually, the script I linked above works exactly the way I described as bad before, as it closes orders in a loop, one by one. Sorry!]