There are terrible drawbacks using any of those techniques (data changes, indexes being modified / dropped, etc) which is why, imo, they should very rarely be used. However, 'allowing direct specification of the query plan' is already implemented in that respect.
The better way to address the problem of different parameters causing performance issues is forcing recompiles which will solve the problem 95% of the time.
I know Oracle and Postgres implements this -- don't know about SQLServer, MySQL, etc...
[0] http://docs.oracle.com/cd/B19306_01/server.102/b14211/stats....
[1] http://www.postgresql.org/docs/current/static/runtime-config...
edit: found/added info for postgres
Having worked with SQL Server for years as a DBA, I've never had to use it once, but I was never working with databases over, say, 1 TB. So while we did encounter slow query problems, they could usually be resolved by introducing reliable indexes, and the performance cost of this was low.