I have the same issue, and sadly turning my blocks into tile entities won't be viable for me. Using a custom baked model and sorting the vertex data there would be an option, though. The trouble then is figuring out how to actually do that properly...
Looks similar to what I do, check out my model and block: https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/resources/assets/harderores/models/block/ore_hardiron_1.json
https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/block/ore/HardOreBlock.java
I would assume you're looking at the instanceof check, and as ItemTippedArrow extends ItemArrow that will pass, what stops it is ItemArrow's implementation of the isInfinite method which does directly check for ItemArrow, so if you make a custom ItemTippedArrow that overrides isInfinite it will work.