I remember this old interesting post, as I thought for a long time about a possible solution. I have found a new idea when reading this thread again now.
You can find a hair length under the skin quite precisely by this procedure:
1) You should give 2 pills with different chemical elements to a patient. Let's say, pill A (for example, with Cu) and pill B (for example, with Fe).
2) The patient should drink pill A. After N days, he should drink pill B. And after the next M days, he should visit you.
3) As hair is growing constantly, it will have two marks at the moment of visit: 1st with Cu and 2nd with Fe.
Imagine the hair with marks A and B, S - skin, P - papilla:
--hair----A--B---S----P
The distance L1 between marks A and B will give you the speed of hair growing: V=L1/N.
The distance from mark B to the skin is L2.
The length of hair under the skin will be L3=V*M-L2.
You can use any suitable spectrometer to find these marks, I do not think that it is difficult now.
These Fe and Cu are only examples here, you should find some other not-dangerous elements or a mix of elements for this method.
-------------------
Ah, I found a better idea right after finishing the previous text.
The patient is visiting you twice:
1st time you paint his hair near the skin (or can simply cut the hair near the skin) and give him to drink a pill.
2nd time, after a week or two, you can measure the distance between the painted border mark (or cut edge) and the pill mark - it will be the hair length under the skin.