Go back to Vivado and have "Disable Read FIFO -> unchecked". No other changes. The CfgInitialize function will now return with XST_SUCCESS and further operations with HWICAP on the embedded hardware will succeed.
This seems to be an error in the implementation for CfgInitialize in xhwicap.c. It does not handle the case where the read FIFO is not included in the HWICAP instance as it seems through the Vitis debugger that it gets stuck attempting to read back all words in the read FIFO in a loop. For some reason the read FIFO occupancy is one and never decrements no matter how many times the code tries to wait for it to clear.