### 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/data/Page.java
assert b.getPositionCount() == positionCount : "expected positionCount=" + positionCount + " but was " + b;
            if (b.isReleased()) {
                throw new IllegalArgumentException("can't build page out of released blocks but [" + b + "] was released");
            }
        }
    }
    /**
     * Appending ctor, see {@link #appendBlocks}.
     */
    private Page(Page prev, Block[] toAdd) {
        for (Block block : toAdd) {
            if (prev.positionCount != block.getPositionCount()) {
                throw new IllegalArgumentException("Block does not have same position count");
            }
        }
        this.positionCount = prev.positionCount;
        this.blocks = Arrays.copyOf(prev.blocks, prev.blocks.length + toAdd.length);
        for (int i = 0; i < toAdd.length; i++) {
            this.blocks[prev.blocks.length + i] = toAdd[i];
        }
    }
    public Page(StreamInput in) throws IOException {
        int positionCount = in.readVInt();
        int blockPositions = in.readVInt();
        Block[] blocks = new Block[blockPositions];
        boolean success = false;
        try {
            for (int blockIndex = 0; blockIndex < blockPositions; blockIndex++) {
                blocks[blockIndex] = in.readNamedWriteable(Block.class);
            }