I queried our plan cache and roughly 23,000 of the 30,000 plans in there have a use count of 1. Most of those are "prepared" as opposed to "ad-hoc". Our database is set to be "optimized for ad-hoc queries". As a database guy, I feel that my hands may be tied since we use Entity Framework ORM. Maybe this isn't a problem?
Here are 2 good reads about that issue, might help if you haven't run into them already.
How your devs are using EF ORM will definitely have an impact on those high numbers.
"A common cause of this problem is when the data types of query parameters is not consistently defined."