I've had zero success using the SQL Server Native Client driver for an ODBC data source - it barfs the first time you encounter the need to open multiple cursors (eg a READ inside a READ EACH). Have never had time to track down if this is avoidable.
I've successfully used "ODBC Driver 11 for SQL Server", "ODBC Driver 13 for SQL Server" and "SQL Server" driver types, however. No outrageous differences in performance from what I can tell.
Without knowing the specific problem, it's hard to offer any advice - inevitably, whenever I've seen performance problems it's been around the way the query has been structured or ordered, and it's interactions (or lack thereof) with indexes. My best suggestion is to use your monitoring tools, and also potentially to extract the SQL from the source and run an EXPLAIN on it.
If push comes to shove, you can also modify StubODBN and use SQLSetConnectOption to change the SQL_CURSOR_TYPE. Depending on your needs/requirements,
SQL_CURSOR_KEYSET_DRIVEN, SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_DYNAMIC, and SQL_CURSOR_STATIC are viable options.