You could try calculating separate points around the player to move to for each enemy so they don't end up following the same path to the same point.
For example, if you had 4 enemies you'd move them to:
Enemy 1 = Player.X - 100, Player.Y
Enemy 2 = Player.X + 100, Player.Y
Enemy 3 = Player.X, Player.Y - 100
Enemy 4 = Player.X, Player.Y + 100
You could also add in some code so that when an Enemy is overlapping another enemy, they both back off a bit in the opposite direction to each other before resuming following the Player.
Alternatively, you could look at the Boids flocking behaviour