### CI Link

local

### Repro line

./gradlew ':x-pack:plugin:esql:compute:test' --tests "org.elasticsearch.compute.operator.ProjectOperatorTests.testProjection" -Dtests.seed=91943554DA6E3559 -Dtests.locale=ar-SA -Dtests.timezone=Indian/Comoro -Druntime.java=21

### Does it reproduce?

Yes

### Applicable branches

main

### Failure history

_No response_

### Failure excerpt

```
  2> java.lang.AssertionError: java.lang.IllegalStateException: can't release already released block [IntVectorBlock[vector=ConstantIntVector[positions=3, value=0]]]
        at __randomizedtesting.SeedInfo.seed([91943554DA6E3559:69BE85F199AA9B5]:0)
        at org.elasticsearch.core.Releasables.closeExpectNoException(Releasables.java:49)
        at org.elasticsearch.compute.data.Page.releaseBlocks(Page.java:224)
        at org.elasticsearch.compute.operator.ProjectOperatorTests.testProjection(ProjectOperatorTests.java:79)

        Caused by:
        java.lang.IllegalStateException: can't release already released block [IntVectorBlock[vector=ConstantIntVector[positions=3, value=0]]]
            at org.elasticsearch.compute.data.IntVectorBlock.close(IntVectorBlock.java:76)
            at org.elasticsearch.core.IOUtils.close(IOUtils.java:71)
            at org.elasticsearch.core.IOUtils.close(IOUtils.java:87)
            at org.elasticsearch.core.IOUtils.close(IOUtils.java:63)
            at org.elasticsearch.core.Releasables.close(Releasables.java:73)
            at org.elasticsearch.core.Releasables.close(Releasables.java:41)
            at org.elasticsearch.core.Releasables.closeExpectNoException(Releasables.java:47)
            ... 2 more
```

I'm unsure if the test is generating sensible projection configurations. This may be an invalid thing.
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/ProjectOperatorTests.java
final CircuitBreaker breaker = new MockBigArrays.LimitedBreaker("esql-test-breaker", ByteSizeValue.ofGb(1));
    final BigArrays bigArrays = new MockBigArrays(PageCacheRecycler.NON_RECYCLING_INSTANCE, mockBreakerService(breaker));
    final BlockFactory blockFactory = BlockFactory.getInstance(breaker, bigArrays);
    @Before
    @After
    public void assertBreakerIsZero() {
        assertThat(breaker.getUsed(), is(0L));
    }
    @Override
    protected DriverContext driverContext() {
        return new DriverContext(blockFactory.bigArrays(), blockFactory);
    }
    public void testProjectionOnEmptyPage() {
        var page = new Page(0);
        var projection = new ProjectOperator(randomProjection(10));
        projection.addInput(page);
        assertEquals(page, projection.getOutput());
    }
    public void testProjection() {
        var size = randomIntBetween(2, 5);
        var blocks = new Block[size];
        for (int i = 0; i < blocks.length; i++) {
            blocks[i] = blockFactory.newConstantIntBlockWith(i, size);
        }