I've seen some blocking happened on linked server queries like:
select * from DB1.mydb.dbo.table1 with (nolock) where....
The remote query seems to call sys.sp_check_constbytable_rowset on DB1. Which gets blocked by some scalar functions on DB1. The contention shows on sysschobjs. But the scalar function does not explicitly reference sysschobjs. I am just wondering if under the cover, functions actually query sysschobjs, sysobjects, etc? But I don't know how/why.