Its very easy for us to get detected if we act out our moves/actions inbetween a set interval. I believe that's how they detected heartbuddy hence the MASSIVE banwave. Hearthbuddy was not your daily bot, so I suggest this to be implemented asap, because I believe we are already in their ban list, question is are they going to ban us now or later.
This will also fix the issue we have with bots - when the board is full, typically the bot can't finish his moves, but now even on full-scale boards, after queing up his orders, all it would take is 3-5 seconds to execute them, and even if time runs out, they are already queued up so it will still pass through even if the button explodes. (Excluding targetting minions which appear after deathratthle and all those shenanigans, just straight forward action queue up). Silverfish usually takes 5-10 seconds to calculate the best play, but I don't know why but Hearthranger takes a lot of time to process that information and use it. Still the set interval between actions I believe to be the biggest flaw in botting and its detection.
I propose 3 changes that are all better than the current situation:
A) Make the delay user configured, so that each bot can be customized, that way we will no longer have something in common between us and we will have our own distinct timers, making tracking who is a bot and who is not a bit more harder. (Provides minimum protection, just some minor distinction, but still easily trackable.)
B) Randomize a delay between X to Y seconds on each new turn, making it pretty hard to track, but still the difference is that real players have a new delay PER ACTION, while we have PER TURN, thats why i believe C to be the best.
C) Queue up orders as stated above, try not to use delays, or use smart delays inbetween queued up orders (Between deathrattle effects or secrets or anything that has a resolve. First order will be to "see" the resolve, like checking what secret there is by dropping a fake minion, and then continue with a second queued order, depending on the outcome. This is only if the bot "wishes" to check the resolve. Example would be killing sylvanas, but you have the option of ignoring her right?) Many players I believe think what to do first, and then just do it on the go, and act accordingly if there is a special situation like a deathrattle minion or a mirror entity in play. Not sure if this is possible, but if it is, blizzard will then have no way of tracking us or even distincting us from real players (if we add some sort of smart delays, i'm 100% sure there will be no way for us to be distincted from real players, putting into consideration the option of the bot, to fake human behaviour.)
EDIT: If somehow the bot queues up the orders too fast, you can always add a random delay from X to Y at the start of each new queued up order, that way it retains its effectivenes and even adds yet another amazing layer of defense against tracking. Make sure that the random generated delay (X to Y) is removed if the bot's processing of information on the field takes longer than the delay itself, because then we just lose time.
Example: The delay is 4 seconds, and the bot takes 3 seconds to decide what to do, then we wait the 4 seconds stated by the delay, because 4>3. (Total amount of time to act: 7) If the bot however has a random delay of 5 seconds, but takes it 30 seconds to decide what to do, after finishing deciding, he skips the delay phase, because 30>=5. (Total delay time is now 30, no point to add more.)
You can make many mathematical tricks here, making it even more complex for tracking, by substracting the delay from the time the bot finished calculating stuff, if the delay is higher than the needed time for calculations, to form a new delay.
Example: Delay is 3 seconds, time needed to calculate board & moves: 2, substract 2 from 3: Answer is 1, now that 1 becomes the new delay, which was formed by substracting a random delay from X to Y (Notice the complexity.) So we use that delay, instead of the 3 seconds. It will also speed up games to the maximum as you can see, because the total amount of time needed for the bot to act would always be the random generated delay, only if the time the bot took to calculate stuff is less than the actual random generated delay (or equal to it).
If all of this is to be implemented with various tweaks and optimizations behind the scenes, because of potential backdooring, Blizzard will have no way to distinct us from real players by just analyzing some logs, looking for similar timings. They will be forced to make an anti-cheat, or to find a much harder alternative way to deal with us. Maybe looking for similarity in the patterns of how we flash our cards and etc...