The only thing I can think of is that the cluster service fails to get a connection when trying to do an IsAlive check on SQL, concludes that the SQL instance is dead and fails it to the passive node.
You could try increasing the grqace period before it decides to fail over. Speak to whoevr's in charge of the cluster administration.
Best option, of course, would be to try and fix those deadlocks. Is that an option?
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability