Reduces object allocation per read log entry

Removes 8, or so, objects allocated per log entry read, but adds one more
object allocation per reader. A reader is used for reading one or more
transactions, i.e. multiple log entries, depending on use case.

Also fixes an issue with a VersionAwareLogEntryReader which was shared
between multiple threads, the one used in transaction cursors, so partly
reverts ee82d018901ad74546724e1af9ce230e2964b698 since it's no longer
needed.