I think, that there should be both stopping and non-stopping attacks, balanced around this. Also, for running away, the only viable option is just to stun player if he completely misses. Or you can add some kind of slowing projectiles like nets or some kind of projectile, that inflicts slowing wound. Without that, a naked person could easily run away from a full-armored knight, just like in real life, so ability to attack would be used only to secure the place from the enemy (while looting or sieging) and not just to hunt down players. For hunting down players the ranged combat would be the viable option in that case. About the bot part, you just need to make enough of viable in different situations attacks, so there is no optimal sequence to spam with perfect timing to win every fight (and that requires some kind of interaction with environment like kicks, sidesteps near enemy knocking off with weapons, etc). I am a big fan of something like Parry skill, but implementing that would just make an Auto-Parry option to the custom clients (considering windup animation).
Implementing combat stamina is also the way to go, so everyone who is spamming moves would suffer from low stamina at the crucial moment.
Another thought about bots that you can make some attacks to use the same animation on the client side, but to have different effects, so what attack is used would only make sense to the real player or some deep-learning AI, implementing which is worth rewarding anyways:D
Also the Legacy Combat felt deep, but just unbalanced, so working around it would also be cool.