### CI Link

https://gradle-enterprise.elastic.co/s/j3ajt4vzqybxs

### Repro line

gradlew ':x-pack:plugin:spatial:internalClusterTest' --tests "org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.testGeoShapeGeoHex" -Dtests.seed=67641D5B7DA4755B -Dtests.locale=en-IN -Dtests.timezone=Canada/Saskatchewan -Druntime.java=17 -Dtests.fips.enabled=true

### Does it reproduce?

No

### Applicable branches

main

### Failure history

_No response_

### Failure excerpt

The test in CI link above doesn't repro for me but I did run the test with multiple iterations. After around 250 of them, one failed for me:

```
REPRODUCE WITH: gradlew ':x-pack:plugin:spatial:internalClusterTest' --tests "org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.testGeoShapeGeoHex {seed=[3478FF74E8D66BB6:A2F98EBD906145BB]}" -Dtests.seed=3478FF74E8D66BB6 -Dtests.locale=sr-RS -Dtests.timezone=Europe/Luxembourg -Druntime.java=19

org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT > testGeoShapeGeoHex {seed=[3478FF74E8D66BB6:A2F98EBD906145BB]} FAILED
    java.lang.AssertionError: Expected hits at precision 15
    Expected: <3L>
         but: was <4L>
        at __randomizedtesting.SeedInfo.seed([3478FF74E8D66BB6:A2F98EBD906145BB]:0)
        at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
        at org.junit.Assert.assertThat(Assert.java:956)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.assertQuery(GeoGridAggAndQueryConsistencyIT.java:224)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.doTestGrid(GeoGridAggAndQueryConsistencyIT.java:215)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.doTestGeohexGrid(GeoGridAggAndQueryConsistencyIT.java:124)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.testGeoShapeGeoHex(GeoGridAggAndQueryConsistencyIT.java:92)
```
x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/search/aggregations/bucket/geogrid/GeoHexVisitorTests.java
public void testLine() throws IOException {
        doTestGeometry(GeoHexVisitorTests::getGeometryAsLine, false);
    }
    public void testTriangle() throws IOException {
        doTestGeometry(GeoHexVisitorTests::getGeometryAsPolygon, true);
    }
    private void doTestGeometry(LongFunction<Geometry> h3ToGeometry, boolean hasArea) throws IOException {
        
        long h3 = randomValueOtherThanMany(
            l -> l == H3.geoToH3(90, 0, H3.getResolution(l)) || l == H3.geoToH3(-90, 0, H3.getResolution(l)),
            () -> H3.geoToH3(GeoTestUtil.nextLatitude(), GeoTestUtil.nextLongitude(), randomIntBetween(2, 14))
        );
        long centerChild = H3.childPosToH3(h3, 0);
        
        long noChildIntersecting = H3.noChildIntersectingPosToH3(h3, 3);
        GeoHexVisitor visitor = new GeoHexVisitor();
        visitor.reset(h3);
        final String failMsg = "failing h3: " + h3;
        boolean h3CrossesDateline = visitor.getLeftX() > visitor.getRightX();
        {
            GeometryDocValueReader reader = GeoTestUtils.geometryDocValueReader(h3ToGeometry.apply(h3), CoordinateEncoder.GEO);
            visitor.reset(h3);
            reader.visit(visitor);
            assertEquals(failMsg, GeoRelation.QUERY_CROSSES, visitor.relation());
            Rectangle rectangle = getGeometryAsRectangle(h3);
            assertTrue(failMsg, visitor.intersectsBbox(rectangle.getMinX(), rectangle.getMaxX(), rectangle.getMinY(), rectangle.getMaxY()));
        }
        {
            GeometryDocValueReader reader = GeoTestUtils.geometryDocValueReader(h3ToGeometry.apply(centerChild), CoordinateEncoder.GEO);
            visitor.reset(h3);