SQL Server has frankly always had some internal issues with parallelizing queries. Parallelization is great for (re)building indexes, but for queries it's always had its quirks.
Unless you are absolutely sure the tables are properly indexed, use MAXDOP to drop the parallelization to a small number, 2-3, to help keep SQL from getting "lost". Of course for very large tables you'll need to bump it up some from that, but I still wouldn't let MAXDOP = 0 be specified or implied.
SQL DBA,SQL Server MVP(07, 08, 09) Prosecutor James Blackburn, in closing argument in the Fatal Vision murders trial:
If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them.