The core issue with wallet performance is selecting which UTXOs (unspent transaction outputs) to spend for a new transaction, when the wallet is tracking a large number of such UTXOs for a large number of addresses. We've made some improvements to this over the past few years so I would recommend running your test case again. If it's still too slow, you need to avoid high-level APIs which automatically select the UTXOs to spend, and instead track the UTXOs yourself and use createrawtransaction to build and send transactions. It is fully able to create all transaction types, including assets, NFTs and streams.