sql server concurrency performance
Your options to have a good picture of the situation when everything is crawling:


use server side traces to see the longest and most heavy sessions
use the Who is Active stored procedure by Adam Machanic - to save the information of the moments when the server is loaded - fantastic free script
use the Activity Monitor from Management Studio just to get a visual glance (Cpu and IO are the ones that I found the most useful) - pretty good tool included in Management Studio
use a 3rd party free tool - Confio Ignite Free - that's very good for moments when everything is slow and need to see details about the wait stats, blocking..etc. - fantastic free tool
check statistics to be up to date
check if indexes are fragmented and, if so, defrag them
follow the other advices of checking missing indexes, design
check the possibility of using the snapshot isolation level in your database (you have high blocking so it's good to see if you really need your current isolation level)


And good luck investigating the problems :-).