Ну вообще есть хитрый способ ) Надо создать битмап(канвас) и отрисовать туда все эти линии например с альфой 0.5, И далее пройтись по всем точкам и проверить альфа координату и если она хотя бы в одном пикселе более 0.5 то значит в том месте примерно имеется пересечение. Естественно есть много тонкостей и настроек такого способа. И не факт что будет быстрей )
Потом при переборе массива с массивом может возникнуть ситуация двойной проверки. Например 100х200 и 200х100. Можно как минимум в пару раз сократить время расчетов:
for(var i = 0; i < 4000; i++)
{
for(var j = i + 1; j < 4000; j++ )
{
// check i vs j
}
}