How do I deal with query getting slower when a select parameter is not specified inline?
If you look at the two execution plans you will see that the estimated cardinality is different in each case.  When the actual value is in the SELECT statement the optimiser can use the cardinality of that one, actual value to choose an access path.  When the SELECT has a variable the optimiser cannot know whether you have provided a very popular or very unpopular accountId so produces a 'best guess' plan.  Unfortunately for your situation this is awful.

Stored procedures (SPs) would be good.  Then you can put all the query hints you want in there.  Also use WITH RECOMPILE to get around parameter sniffing issues.  If you have good inexes already, and you don't have access to the source SQL or can't use SPs, Plan Guides may be a good option.  If you end up using them be sure to schedule a review every so often to ensure the chosen plan is still optimal.