Problem
Block deserialization benches still read immutable fixture bytes through DataStream, which keeps around mutable stream semantics and old compaction-oriented setup that these call sites do not need anymore.
Fix
We first remove the stale Rewind() parameter and failure path, which reduces rewinding to a simple reset of the read position that clear() can reuse.
We then route fully consumed read() and ignore() paths through clear(), remove the leftover compaction references and dummy-byte workaround, and finally switch the block deserialization benchmark readers to SpanReader.
DeserializeBlockTest can then deserialize directly from the fixture bytes without an untimed setup phase, while CheckBlockTest still keeps setup only to rebuild a fresh CBlock before the timed CheckBlock() call.
Context
This follows the same direction as #34483 and is a follow-up to #34208. The modified benchmarks retain their previous timing.
Benchmarks
The affected benchmarks speeds don't seem to be affected by the changes.
<details><summary>Before & After</summary>
Before:
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 37,591,891.96 | 26.60 | 1.0% | 11.07 | `BlockToJsonVerboseWrite`
| 155,664.09 | 6,424.09 | 0.1% | 10.99 | `BlockToJsonVerbosity1`
| 28,620,345.39 | 34.94 | 0.1% | 10.99 | `BlockToJsonVerbosity2`
| 28,637,604.74 | 34.92 | 0.1% | 11.01 | `BlockToJsonVerbosity3`
| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 530,167.00 | 1,886.20 | 4.7% | 0.01 | `CheckBlockTest`
| 1,439,417.00 | 694.73 | 0.7% | 0.02 | `DeserializeBlockTest`
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 269.95 | 3,704,375.43 | 0.4% | 11.01 | `PrevectorDeserializeNontrivial`
| 14.90 | 67,114,436.52 | 0.0% | 10.88 | `PrevectorDeserializeTrivial`
After:
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 37,114,824.07 | 26.94 | 1.8% | 10.89 | `BlockToJsonVerboseWrite`
| 154,881.99 | 6,456.53 | 0.2% | 10.99 | `BlockToJsonVerbosity1`
| 28,546,697.37 | 35.03 | 0.2% | 10.98 | `BlockToJsonVerbosity2`
| 28,547,328.27 | 35.03 | 0.3% | 11.02 | `BlockToJsonVerbosity3`
| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 522,750.00 | 1,912.96 | 4.7% | 0.01 | `CheckBlockTest`
| 1,404,510.54 | 711.99 | 0.1% | 11.00 | `DeserializeBlockTest`
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 273.52 | 3,655,991.66 | 0.4% | 11.00 | `PrevectorDeserializeNontrivial`
| 14.31 | 69,863,193.52 | 1.4% | 11.03 | `PrevectorDeserializeTrivial`
</details>