If you want something to trigger on overlap but without the two bodies touching, then I'd recommend using an Area2D node. So here's what I'd try:
Set player to collision layer 0, and mask 1 (so its on layer 0, but collides with layer 1)
Set enemies to collision layer 1 and 2, and mask 2 (so its on layer 1 and 2, but collides with layer 2)
Add an Area2D to the enemies, set its collision layer to nothing, and mask to nothing
When enemy runs, remove its collision layer 1 (though code) and set its Area2D's mask to 0 (so player can't collide with it, and the Area2D can collide with player)
When enemy stops, add its collision layer 1, and remove its Area2D's mask 0 (so player can collide with it, and the Area2D is disabled)
Note that enemies can still collide with each other on layer 2, and the code for setting a collision layer is set_layer_mask_bit(int bit, bool value)
and for setting a collision mask it's set_collision_mask_bit(int bit, bool value)