### CI Link

https://gradle-enterprise.elastic.co/s/xws6gmgwdwnmm/tests/overview?outcome=failed

### Repro line

./gradlew ':x-pack:plugin:esql:test' --tests "org.elasticsearch.xpack.esql.CsvTests" -Dtests.method="test {rename.RenameProjectEval}" -Dtests.seed=F32BCA1B870438F -Dtests.locale=ar-LY -Dtests.timezone=UTC -Druntime.java=21	

### Does it reproduce?

Yes

### Applicable branches

main

### Failure history

_No response_

### Failure excerpt

```
java.lang.AssertionError: java.lang.IllegalStateException: can't release already released block [IntVectorBlock[vector=IntArrayVector[positions=3, values=[2, 5, 4]]]]
```
x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/ProjectOperator.java
* Close all {@link Block}s that are in {@code page} but are not in {@code blocks}.
     */
    public static void closeUnused(Page page, Block[] blocks) {
        List<Releasable> blocksToRelease = new ArrayList<>();
        for (int i = 0; i < page.getBlockCount(); i++) {
            boolean used = false;
            var current = page.getBlock(i);
            for (int j = 0; j < blocks.length; j++) {
                if (current == blocks[j]) {
                    used = true;
                    break;
                }
            }
            if (used == false) {
                blocksToRelease.add(current);
            }
        }
        Releasables.close(blocksToRelease);
    }
    @Override
    public String toString() {
        return "ProjectOperator[projection = " + Arrays.toString(projection) + ']';
    }
    static void assertNotReleasing(List<Releasable> toRelease, Block toKeep) {
        
        assert toRelease.stream().anyMatch(r -> r == toKeep) == false
            : "both releasing and keeping the same block: " + toRelease.stream().filter(r -> r == toKeep).toList();
    }
}