How to Limit Access in a Database System
Allowing even trusted users to login to what appears to be a production database is in my mind a big no-no. The solutions you mention above may provide you with a sense of security/relief but they their own have side effects. 

I would be particularly worried about your statement 


  Manual updating and inserting of records is very infrequent


If you have users who are updating/insert records then I am sure they are also deleting records most likely with no or a very limited audit trail.

If this was my database I would 


Immediately prevent all users from accessing the database tables and running any SQL statements such as Select, Insert, Delete, Update etc
Sit down with the end users who are requesting data and determine exactly what data is required. Based on the end user requirements create a set of SPs that produce the required data. 
A DB account should be created that would only have execute permissions on the SPs
If possible determine if the reports really have to be run in real time on a production database. If not I would suggest a snapshot be created on a regular basis on which the reports are run.
I would also ensure that the sa account has a strong password and is not used on a day to day basis and that the password is know to only 1-2 people.
Monitor the database over a period of time to ensure users have not gained additional privileges