I feared something like this - it doesn’t seem like dump-create includes monitors/locking information, which is essential to figure this out. I can’t find any arguments that you can use with dump-create to include it either. So, while this thread dump provides some insight, I can’t really figure out what’s blocking what.
Could you try the procedure I listed above instead?
The -l parameter is what makes it include the information I need.
Edit: Your dump shows 18 threads that are considered blocked, but there are another 478 threads waiting for some lock to open. Not all over these are “wrong”, some mechanisms use waiting for a lock as a way to “pause” execution until a task is due, but without doubt, a portion of these should not be waiting, and are in effect stuck.