Big thank you to Ted for pointing me in the right direction - I tried to mark your answer as correct but unfortunately I continue having issues editing your answer.
Regardless, here is a simple sample that implements the solution. The strategy we came up with was to keep track of the longitude of the last point that we processed. When processing new points, if we see that a point makes a really bug jump (in the x direction) - we assume that it's wrapped and we add or subtract the width of the world to move the point back to other points from that country.
Here is the meat of the fix in the overlay.draw function
var markerOverlay = this;
var overlayProjection = markerOverlay.getProjection();
var worldwidth = overlayProjection.getWorldWidth();
var prevX = null;
// Turn the overlay projection into a d3 projection
var googleMapProjection = function (coordinates) {
var googleCoordinates = new google.maps.LatLng(coordinates[1], coordinates[0]);
var pixelCoordinates = overlayProjection.fromLatLngToDivPixel(googleCoordinates);
if (prevX != null) {
// Check for a gigantic jump to prevent wrapping around the world
var dist = pixelCoordinates.x - prevX;
if (Math.abs(dist) > (worldwidth * 0.9)) {
if (dist > 0) { pixelCoordinates.x -= worldwidth } else { pixelCoordinates.x += worldwidth }
}
}
prevX = pixelCoordinates.x;
return [pixelCoordinates.x + 10000, pixelCoordinates.y + 10000];
}