You pretty much got the answer I was thinking -- but you can search for the largest angle instead of cross-product. It should work as long as you aren't inside the polygon's convex hull (meaning it works for angles up to 180 degrees).



To get it easily, calculate the absolute angle from the origin to each point.

Code:
vert[];
angles[];
for(i = 0; i < vert.length; ++i)
  angles[i] = Math.atan2(vert[i].y, vert[i].x);
Then calculate the difference between each pair of absolute angles, being careful with overflows. The pair of points with the largest angleDiff is your answer.

Code:
angleDiff(a, b) {
  diff = abs(a-b);
  if(diff > pi) return diff-pi;
  return diff;
}