An interesting thing to remember about the way .SelectAsync() works as a stage, is that it will only yield if the method is actually async.
In other words, if a DB Call is fully synchronous (i.e. SQLite) there may be minimal benefit to parallelism settings as well as a potential loss in overall throughput.
Looking into whether wrapping the main write/read loop logic in a Task.Run and comparing benchmarks, will at least give a baseline idea of whether to make a change (e.x. adding a config switch).
If not we can document here in case it comes up again :)