It's always been due to a session blocking everyone else. Too bad the application doesn't handle this better on it's own.
Here's a query I use from time to time to see who is blocking.
Select /*+ RULE */ username, v$session.SID, serial#, owner, object_name, object_type,
FROM dba_objects, v$lock, v$session
WHERE object_id = v$lock.id1 AND v$lock.SID = v$session.SID
AND owner != 'SYS'
AND block = 1