When you project the geometry, does it have to project towards a point (like a camera?) or would it be sufficient if you were to project just straight and perpendicular to the plane. If the latter is true then the fastest way I can think of would perhaps be to change the base frame and so it aligns with the plane's frame and set one axis scale to zero.
To be honest I am not sure homogenous coordinates will be much faster... If you look at my example there's only a few dot products in there and it only grabs two vectors to define the plane, the same two for all points in the calculation. Compare that to a bunch of 4*4 matrices...
I am sure the Houdini nodes made for this thing, intersect, etc, are quite good at what they do, probably even using homogenous coordinates.
How fast do you need it to be?
Otherwise, perhaps you could pipe this through a graphics card but that is beyond my capabilities.
Edit: In my previous file, get rid of all the attributes, and there should be a nicer way to get at the 2 plane defining vectors. It should then multithread and be much faster.