XferData is an Synchronous (Blocking) API. i.e. It performs synchronous (i.e. blocking) IO operations and does not return until the transaction completes or the endpoint's TimeOut has elapsed.
Whereas, stremaer application uses Asynchronous APIs (BEginxferData, WaitForXfer, FinishXferData). BeginDataXfer is an advanced method for performing asynchronous IO. This method sets-up all the parameters for a data transfer, initiates the transfer, and immediately returns, not waiting for the transfer to complete. You are seeinng better throughput with streaer mostly due to this. What is the packtes per Xfer and xfers to Queue that you have selected in streamer app?
You can find details in the CyUSB.NET Programmer's manual, when you install the SuperSpeed USBSuite.