Most of your time is spent in defining PolarCoords. Let's take a look at your code.
It looks like you've tried to optimize it already. Let's try to simplify it first:
PolarCoords =
Map[Function[i,
ToPolarCoordinates /@
newCoord[[i]] /. {x_, y_} /; y < 0 -> {x, y + 2 \[Pi]}],
Range@Length@pts]
Simpler:
PolarCoords =
Map[Function[i, ToPolarCoordinates /@ newCoord[[i]]],
Range@Length@pts] /. {x_, y_} /; y < 0 -> {x, y + 2 \[Pi]}
Simpler:
PolarCoords =
Map[ToPolarCoordinates, newCoord] /. {x_, y_} /; y < 0 -> {x, y + 2 \[Pi]}
And even simpler since ToPolarCoodrindates doesn't need to be mapped:
PolarCoords =
ToPolarCoordinates[newCoord] /. {x_, y_} /; y < 0 :> {x, y + 2 \[Pi]}
This code above is helpful. It helps me understand what the line is supposed to do. You wanted to first run ToPolarCoordinates over every point and then shift them right by 2Pi if y is negative.
In large vectorized computations, conditionals can be a problem. You can replace the condition with:
{x_, y_} :> {x, Mod[y, 2 Pi]}
Which does what I think you intended. So if I wanted to make this run fast, I would probably combine the two operations into one function:
f[{x_, y_}] := {Sqrt[x^2 + y^2], Mod[ArcTan[x, y], 2 Pi]}
g[coord_] := Map[f, coord_, {2}]
And then I could use either use Compile to make a compiled version of g or use ParallelMap.