Once #16426 merged, splitting our big cs_wallet into multiple ones would make sense because multiple RPCs won't be in conflict anymore to hold cs_main.
New locks like cs_mapWallet and cs_mapTxSpends, while handling well cases like we don't want to commit twice a coin to different transactions or return twice an address to avoid key reuse. Multiple "read" RPCs like listtransactions or listsinceblock should work smoothly concurrently without stopping each other.
I don't know exactly what is possible but I think there is room for improvements and I don't plan to do it so feel free to dig into it.
See logs https://bitcoincore.reviews/16426.html for more context.