Move 'compress' outside of the locked code path.
Use a pool of workers to compress data.

Doing the work within S3BatchSink caused everything to run
single-threaded and hence not take advantage of all the available
CPU resources.
Use a special placeholder for DELETE messages.