I think your best friend in this situation is sp_whoisactive developed by Adam Machanic; you may get the same from Brent Ozar's website. First Responder Kit
I was having similar condition wherein I used to get frequent blocking and my application used to go in non-responding state. I didn't change isolation level directly rather I enabled only Read Committed Snapshot. Below is command to do that:
--Query to check current state of database
SELECT name, is_read_committed_snapshot_on FROM sys.databases where name = ‘DB_NAME’
--Query to modify the database:
ALTER DATABASE DB_NAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE DB_NAME SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
GO
Please keep in mind that this change requires downtime at production server.
Read committed snapshot Isolation enabling requires code change at times and could put you in trouble. If its working in your case then, its perfectly fine. you may read more about the same on Little Kendra's Website Isloation level by Kendra
I hope above info would be of help or you. In case you are using any database monitoring tool like Solarwinds DPA or Whitesands Proactive DBA; this could be of great help in terms of alerting.
As far as your second question goes - yes, you can change isolation level at session level however I am not very sure about table level.
You may refer my question on this forum at Database Blocking
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
... Please post the deadlock graph XML and then we can help you solve the root problem.