An NTRUPlusKEMExtractor holds one NTRUPlusEngine for its lifetime, so the engine must not carry
mutable state across a call. It used to keep a single SHAKE instance in a field: two threads
extracting through one extractor interleaved their absorb/squeeze phases, which produced wrong
shared secrets and threw
IllegalStateException: attempt to absorb with odd length queue.
The digest is now built per call, as CMCEEngine's already was.
The generator side is exercised too, since NTRUPlusKEMGenerator builds an engine per call but its
KEM keys and parameters are shared - and NTRUPlusParameters hands every engine the same zetas
array, so a write to it would corrupt globally.