To speed up unit picking around the current-point along the line, what you can do is:
When the spell initiates, find the distance/angle between start & end of line (this is obvious)... Then find the half-way point, do a "pick all units in range" using the total distance*0.55(extra 10% to be sure to catch all units) as the radius. Remember this group, by whatever means, and scan through it when looking for possible targets. 20x this way is much faster than 20x "pick all units in range".
As for the actual detection, Avator seems to have a good approach. But, I'd allow the circles to overlap, just filter out already effected units (add them to a group, and scan that group).
I've have used this sort of approach myself. I did it a while back using H2I, and it was still pretty quick, even though structs are a hell of alot faster.