Instead of exposing it as a shared scratch, maybe it could be exposed as the current value? Meaning that instead of eg. doing
```java
BytesRef scratch = bytesValues.getSharedScratch();
bytesValues.setDocId(42);
int hash = bytesValues.nextValueHashed(scratch);
// the value is now in scratch
```
Consumers would do
```java
bytesValues.setDocId(42);
int nextHash = bytesValues.nextValueHashed();
BytesRef value = bytesValues.current();
```
(The name is maybe not the best candidate, but the idea is to do something like `TermsEnum.term()` or `DocIdSetIterator.docId()`.)