How else to troubleshoot LCK_M_U from SQL Server?
Do you know exactly what the INSERT statement is and what line of EF code generates it? Just wrap whatever calls that around some logging code and log all the SQL to a text file (preferably using log4net, nlog, ETW etc. 

Just wrap the code that calls the insert code with a call to set and unset the delegate described here.

e.g.

 ctx.Database.Log = (dbLog =&gt; log.Debug(dbLog));
// Do the insert
ctx.Database.Log = null;


Honestly, if you can deal with a slight slowdown in performance, and have the disk space just log everything. I log all the SQL in my Always Encrypted Sample app.

Assuming your INSERTS are wrapped around transactions, you should be able to see that instantly with this. Make sure your logging has timestamps so you can see how long the transaction remains open for.