This query, as written, must compare every pair of rows, and the cost estimate is reasonably accurate.
On a supported version of SQL Server you might get a parallel plan, or there is an undocumented query hint that will force a parallel plan.
select t1.itemid, t2.itemid
from #temp T1
inner join #temp as t2
on t1.itemid like '%' + t2.itemid + '%'
It sounds like you're making some headway Tom.
As you've no doubt realised from your work and the answers provided, joins in SQL are for matching on common data between tables. SQL server doesn't actually prevent you from joining on totally unrelated data, the only thing it enforces is that the type of data is the same between columns you are matching on....