Query performance of a NULL vs an empty ('') varchar in SQL Server 2012
Using your info about the distribution of values (and some guessing), I would say that your problem is that MSSQL is doing an table scan when receiving an WHERE clause for empty string.

Why? Suposing that your index on varchar column does not cover the query (in other words, include all the columns referenced in the query); MSSQL have to do an seek to get the PK's columns (if it is clustered) - or record-id (if not) - and using that in a bookmark lookup to get all the columns it need. 

Where comes the table (or clustered index) scan? Simple: based on index statistics, if the number of pages touched to get that data is over than 25%-33% of the total pages of the table, MSSQL considers that is too much expensive to use the index and goes the table (or clustered index) scan way. 

This is discussed in deeper details on this dba.SE question.

As to solve the problem, you can:


create (or modify an existing index to be) an covering index to your query
Reduce, if possible, the columns on the query - so it become covered by an existing index