I finally did what I thought would be the final thing to do: I edited the pointOnMeshInfo.mll and included the calculation of tangentU. Although it uses 2 nodes, it doesn't works faster than Bazhutkin's version, I don't know why. So it is your choice.
Here you can downlaod the plug-in and mel scripts:
To make it faster, I have some ideas. The first thing could be done is to eliminate the need of an aimConstraint node by directly calculating the rotational values within the node itself. The second one could be calculating all the rivets' positions and rotations at once within a single node.
I thing I will give a break to this rivet problem, I'll work on this when we need this on our animation studio...