The reason large select is blocking is due to lock-escalation. In SQLServer2008, you can disable lock-escalation by command set lock-escalation disable. How big is your select? How many tables? Have you measured IO and time? You should try to tune that SP to see if you can minimize the resource usage, optimize the query.
For performance tuning, please see my SQLsaturday#57 presentation. (too much to mention)
I solved this kind of problem before (in a poor-man's 2005 environment) by producing the select into a physical table over night (like Oracle materialized view, extra GB space needed in my case). It won't be real-time though. If you have to, you can utilize database snapshot for the report queries. Obviously, warehouse queries should be handled separated from OLTP queries.
Snapshot isolation utilizes row-versioning instead of locking, but be prepared with tempdb resource depending on how large is your select query, and whether you are near or out of IO capacity.