Sounds like you’ve tackled similar problems...
In my case I’m always targeting a single output device (ASIO or WASAPI) with multiple channels, so everything runs in the same clock domain and I haven’t needed to deal with ASRC or clock sync between endpoints. For measurements, clock drift is compensated with ATR similar to this app. On the convolution front, I initially went down the route of a uniformly partitioned, frequency domain engine (overlap save with a circular frequency delay line). But stepping back, I realized that for my use case it made more sense maybe to not embed a convolution engine at all. Instead, I’m now generating the appropriate filter/config setups for existing engines which also handle re-sampling. That keeps my side focused on filter design and system configuration rather than real time DSP (at least for now!).