In my experience "Bounce Off Solids" works well only when bouncing off of stationary objects.
For example this uses "Bounce Off Solids" for everything.
Notice unsightly teleportation when objects get in close quarters.
So one Idea that eliminates the teleporting is to have the enemies not have the solid behavior and resolve their collisions as they move with events. Basically it involves checking the distances of every enemy with all the others. If the enemies are too close we can calculate exactly how much they are overlapping and then can move one enemy half the overlap one way and the other enemy half the distance the other way.
One thing that is not addressed is changing the enemy's speed. They will appear to stop until the path is free and they will jet back at their original speed.
In this final example I addressed the lack of bouncing. To do it I needed to get and set velocity x and y so I opted to remove the bullet behavior and do the movement with events.
It works well, but there is no collision response with the walls.
You could make example 2 work with the bouncing in example 3 by converting the bullet behavior's speed and angleOfMotion to vx and vy with:
doing the calculations and then converting back with:
Another idea would be just to use the physics behavior for the whole bit.