I don't think the solution of enabling VT-d, removing dart=0, and/or not dropping DMAR table is the best solution for this problem. There are probably good reasons why most Hackintosh build guides tell you to do those things (not just because USB doesn't work, the computer won't boot, or mounting the EFI partition causes a crash). Fixing those problems may prove more difficult than fixing the problem of the VRS8 driver.
To fix the VRS8 driver, you need to know why it fails in the first place. The failure messages in the logs can be found in the VRS8 driver code. You can do two-machine kernel debugging (with Ethernet or FireWire or serial), set a breakpoint, and discover the parameters being passed to the routines that are failing. One parameter you need to know is how much memory is being requested.
The next thing you'll want to know is why that memory cannot be allocated. All the code is at opensource.apple.com. You'll probably want to write a function that finds all the free spaces in physical memory and calculates their sizes. Then see how those sizes compare with the amount of memory being requested.
To aide in debugging, you might want to build your own kernel (I haven't tried this recently). But before doing that, you could try the debug or development kernel in the "Kernel Debug Kit" which can be downloaded from Xcode (get the one that matches your macOS version and build).
Once you know how much memory is required, You'll want to create a method to reserve that memory. Maybe a Lilu plugin can do that early enough using LiluFriend. If that works, then you can do one of two things:
A) Move the VRS8 kext from /S/L/E or /L/E to somewhere else. After booting, force your memory reserving kext to unload. Then load the VRS8 driver kext.
B) Add code to the plugin that patches the VRS8 driver to call a routine that releases the memory so that the VRS8 driver can use it.
Both of those options requires that no memory in the reserved range is reserved by something else in the time between when the memory is released and the VRS8 driver requests it. In that case, maybe there's a way for the Lilu plugin to pass the reserved memory to the VRS8 driver without releasing it.
If the Lilu plugin cannot reserve memory early enough, then maybe it can be done in your custom built kernel. But that's not a good long term solution, so maybe you can do it in a custom build of Clover, but that's not a good long term solution either, so you'll want to do it in an EFI driver. You'll need your Lilu plugin to take that memory and pass it to the VRS8 driver. The EFI code could create a device property with the address of the reserved memory.
The work I have done so far includes a Hopper Disassembler v4.app file for the VRS8 driver and a dump of all the vtables and structs in the dwarf files included in the Kernel Debug Kits. I am missing a method of converting the dumps into types that Hopper can import to make the disassembly easier. Hopper can use C type header files, so I guess I just need to modify my dwarf dumper to produce output that looks more like C.