Hello again!
I managed to modify David's translation of ly:hairpin::print to have it use two properties, Hairpin.rotate and Hairpin.straight-end, to achieve almost all the results I wanted.
The idea is that Hairpin.rotate can be either a numerical value, representing the angle of rotation, or a procedure that returns the angle of rotation. In one of the examples I used the function discussed earlier in this thread to have it automatically detect the angle of a beam. However, I can't manage to make this idea work when the procedure given to Hairpin.rotate requires more than one variable. This is very inconvenient because for some cases the procedure would need to calculate again a lot of things that are already calculated in the process of making the stencil.
Besides that, I have yet to figure out how to make a rotated Hairpin with the circled-tip placed in the right spot (when it's a decrescendo, crescendos pose no problem that I've found).
I think everything else is working as intended, but I could be wrong. I attached it in case anyone wants to look at it or test it out.