Build a scheduler, to simulate parallel game flow
Your set of rules is self-conflicting. You require


  Same unit cannot perform two actions in parallel


but also


  When unit perform attack, the interacting unit must perform take damage [...] during the attack-action time of the performing unit.


and


  Multiple units can attack single unit at once


In other words, you require that multiple take damage actions be performed simultaneously while demanding that that may not happen.