I worked out a really simple solution for this which works well enough for what I need and is really quick. I basically made a plane out of each side of each road section (each road section has 4 sides) and for opposite sides then took the distance between the point and the plane and made a percentage out of that for U and then did the other opposite sides for the V. I already compute the planes for splicing up the sections to fit on the terrain, so it's actually pretty fast. There are some very minor artefacts if you look closely from above where the textures are very slightly skewed but you'd have to really look hard to see it and the road will never be viewed from that angle anyway. It's also only apparent with my test texture which is a grid, for tracks and roads you can't tell.
Onwards and upwards!