Outer broadcasting?

Yes, apparently I skimmed your post too quickly, because I missed the fact that you were already using Iterators.product in your second solution.