this change migrate most of the OSD implementation to C++20 coroutine
when appropriate to improve the readability and maintainability.
there are two patterns in this migration:
- mechanic replacing future-promise then() chain with co_await/co_return
- replace `return <ready future>` with a `co_return` statement
- replace `seastar::do_for_each()` with a regular for loop, and
optionally restructure the code so it's more compacted.
- replace handle_exception() with regular try-catch block