Thanks, I tried your second option and now I can reproduce the problem with that test-card.
The thing is interesting, because dgVoodoo behaves the same as native D3D9:
- Win10: no hair shadow
- Win 7: hair shadow is there, see my screenshot

TBH, examining a rendered frame of the game reveals that the hair shadow is not dependent on the hair texture. At least, not directly, through D3D9.
Shadow is calculated into the face mesh (into texture coordinates) that are processed in a later stage in the vertex shader and the result is passed to the pixel shader to compose the final face texture from a base face texture + a skin color lookup texture (+ others... 😀 ).
But generating the mesh data itself is completely done by the game. I don't yet know what the shadow presence depends on, but it seems to be a thing coming from the difference of Win7/win10.
Don't ask why it works with other wrapper then.
It all is still to be figured out.