I made this module Parallel Scheduler, which could help you parallelize your raycast. I would probably divide the work into like 10 - 50 raycasts per task
In my post, over 9 thousands raycasts are fired every frame (though, with a major impact to fps)
Another thing you can do is using BulkMoveTo as mentioned, give it a table of all the HumanoidRootParts, and a table with their corresponding CFrames and it should help a bit with fps