This is much too slow for my taste and I am not sure, but I think it does what you ask for. I just create a random list lineweights of weights for each line. (I would discourage storing the weight within the Line object in any way.) The function Boole[Head[BooleanRegion[And, {##}]] =!= EmptyRegion] & takes a sequence of regions and returns 1 if they intersect and 0 else.
lines = Line /@ Partition[N[pts], 2]; lineweights = RandomReal[{0, 10}, Length[lines]]; rectangles = Flatten[Outer[ DiscretizeGraphics@*Graphics@*Rectangle, Partition[N[lver[[All, 1, 1, 1]]], 2], Partition[lho[[All, 1, 1, 2]], 2], 1] ]; A = Outer[ Boole[Head[BooleanRegion[And, {##}]] =!= EmptyRegion] &, lines, rectangles ]; Mean[lineweights A]