**Describe the bug**
When <allow_s3_zero_copy_replication> is set to 1 in the <merge_tree> configuration, replicated tables with TTL moves or delete are broken. SELECT from replicated tables with TTL moves or delete causes errors.

**Does it reproduce on recent release?**
[The list of releases](https://github.com/ClickHouse/ClickHouse/blob/master/utils/list-versions/version_date.tsv)

* 21.4.1 revision 54447

**How to reproduce**
* Version: 21.4.1 revision 54447
* Storage configuration: 
```
<yandex>
  <storage_configuration>
    <disks>
      <external>
        <type>s3</type>
        <endpoint>[AWS S3 endpoint]</endpoint>
        <access_key_id>[access_key_id]</access_key_id>
        <secret_access_key>[secret_access_key]</secret_access_key>
      </external>
      <external_tiered>
        <type>s3</type>
        <endpoint>[AWS S3 endpoint]</endpoint>
        <access_key_id>[access_key_id]</access_key_id>
        <secret_access_key>[secret_access_key]</secret_access_key>
      </external_tiered>
    </disks>
    <policies>
      <external>
        <volumes>
          <external>
            <disk>external</disk>
          </external>
        </volumes>
      </external>
      <tiered>
        <volumes>
          <default>
            <disk>external</disk>
          </default>
          <external>
            <disk>external_tiered</disk>
          </external>
        </volumes>
      </tiered>
    </policies>
  </storage_configuration>
</yandex>
```
* Merge tree configuration:
```
<yandex>
  <merge_tree>
    <allow_s3_zero_copy_replication>1</allow_s3_zero_copy_replication>
  </merge_tree>
</yandex>
```
* Statements to reproduce error: 
Note: either of the two following create statements could be used -- the error occurs with both TTL move and TTL delete.

Create replicated table with TTL move on two instances of ClickHouse:
```
CREATE TABLE zero_copy_replication ( d UInt64, d1 DateTime ) ENGINE = ReplicatedMergeTree('/clickhouse/zero_copy_replication_ttl', '1') ORDER BY d 
TTL d1 + interval 2 day to volume 'external'
SETTINGS storage_policy='tiered';
CREATE TABLE zero_copy_replication ( d UInt64, d1 DateTime ) ENGINE = ReplicatedMergeTree('/clickhouse/zero_copy_replication_ttl', '2') ORDER BY d 
TTL d1 + interval 2 day to volume 'external'
SETTINGS storage_policy='tiered';
```
Alternate create statement, replicated table with TTL delete on two instances of ClickHouse:
```
CREATE TABLE zero_copy_replication ( d UInt64, d1 DateTime ) ENGINE = ReplicatedMergeTree('/clickhouse/zero_copy_replication_ttl', '1') ORDER BY d 
TTL d1 + interval 2 day
SETTINGS storage_policy='tiered';
CREATE TABLE zero_copy_replication ( d UInt64, d1 DateTime ) ENGINE = ReplicatedMergeTree('/clickhouse/zero_copy_replication_ttl', '2') ORDER BY d 
TTL d1 + interval 2 day
SETTINGS storage_policy='tiered';
```
Insert data into the table, with some rows before the 2 day TTL, and some rows after the 2 day TTL.
Then, SELECT using a command similar to the following:
```
SELECT COUNT() FROM zero_copy_replication
```

**Expected behavior**
Expect to be able to SELECT from a replicated table with TTL with <allow_s3_zero_copy_replication> set to 1.

**Error message and/or stacktrace**
Error message:
```
Code: 499. DB::Exception: Received from localhost:9000. 
DB::Exception: <?xml version="1.0" encoding="UTF-8"?><Error><Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>data/zero-copy-replication/xqzqytlaumwdavygqraanbwlllelhijs</Key>
<RequestId>0W01GFT6FX2J4VDF</RequestId>
<HostId>FGeqq3GokrJx9qHMxu9TeFgmWrm/2nH0c6xMLTAGxcWXBeZgnapkwOfJixZZN9JXjjjd6Ei6CKY=</HostId>
</Error>: (while reading column d): (while reading from part 
/var/lib/clickhouse/disks/external/store/83b/83b6fb95-f932-417a-aaaf-c709d864e7a5/all_2_2_0/ 
from mark 23 with max_rows_to_read = 8192): While executing MergeTreeReverse.
```

{
    for (const auto & column : part->getColumns())
    {
        ColumnSize & total_column_size = column_sizes[column.name];
        ColumnSize part_column_size = part->getColumnSize(column.name, *column.type);
        total_column_size.add(part_column_size);
    }
}
void MergeTreeData::removePartContributionToColumnSizes(const DataPartPtr & part)
{
    for (const auto & column : part->getColumns())
    {
        ColumnSize & total_column_size = column_sizes[column.name];
        ColumnSize part_column_size = part->getColumnSize(column.name, *column.type);
        auto log_subtract = [&](size_t & from, size_t value, const char * field)
        {
            if (value > from)
                LOG_ERROR(log, "Possibly incorrect column size subtraction: {} - {} = {}, column: {}, field: {}",
                    from, value, from - value, column.name, field);
            from -= value;
        };
        log_subtract(total_column_size.data_compressed, part_column_size.data_compressed, ".data_compressed");
        log_subtract(total_column_size.data_uncompressed, part_column_size.data_uncompressed, ".data_uncompressed");
        log_subtract(total_column_size.marks, part_column_size.marks, ".marks");
    }
}
void MergeTreeData::checkAlterPartitionIsPossible(