The typical turnaround time for TWR in DWM3001CDK

How fast are you running the SPI bus? If you are reading all the CIR data then that’s a lot of information which will take time to read.

The other part that can make a huge difference is what exactly you are transmitting. Long preambles and large data packets take time to send. e.g. a 256 symbol preamble is ~270 us, 512 is over 500 us. If you then add in a lot of data the packet transmission time can severely limit your update rate.
The Step 1 section of the TWR tab of the spreadsheet here Transmission Time - #2 by AndyA can calculate the time taken for any given packet. It was done for the DW1000 but unless you turn on STS the packet structure is the same so the results are still valid.

For reference by stripping everything to the bare minimum I managed to reliably run a DS-TWR exchange (4 packets in total) in 1 ms using 6.8Mb/s or 1.2 ms at 850kb/s. But that was stripping everything back to the absolute minimum.

The other trick is to use the same tag start message to measure to multiple anchors, each anchor then responds at a slightly different time. Since you end up sending less messages total for each set of ranges you can get more ranges in a fixed amount of time. This results in a slower maximum rate per anchor but a higher total range measurment rate. Doing this I can reliably hit 2,400 DS-TWR ranges per second.