Updating positions of enemies every frame
Some things you could try:

Unless the waypoints change position, the objects will continue in the same direction each frame. This means 


you don't have to recalculate directionToWaypoint (unless you have imperfect rotation). This includes cos(directionToWaypoint) and sin(directionTpWaypoint)
translationX and translationY become simple multiplication
distanceTravelled seems too complicated. Why isn't it just getMovementSpeed() * delta?