Ok, so just to update this thread as I have now solved my issue. I searched so many threads at the beginning and nobody posted if or how they managed to find a way of doing it. Hopefully this will help someone out there.
I guess this technically is a 'development' solution to the problem but the way I did it didn't require me to edit the php script itself, that remained the default signup php page. I did have to spend a bit of time learning a bit of jquery though but it wasn't too hard once I got to grips with it.
Set up all the additional fields you need via site administration>users>accounts>user profile fields. Enter ALL the possible entries in the options for each added profile field, that way when you build the dropdown menu options in jquery later, they will submit to the database and will also validate correctly.
The jquery itself goes in the 'Additional html' section of moodle, via the administration options. It's FAR easier to be editing your code in something like notepad++ and pasting it in the 'Additional html' section. Don't bother trying to edit your code in the little window within moodle itself.
A good starting point, if you didn't know jquery like me, is to look at https://css-tricks.com/dynamic-dropdowns/. I used the json method (method 2) as it fit the bill quite nicely. If you didn't know this already, you can find the html element IDs/names via your browser in development tools.
Once you can get this far you can start looking at using conditional statements to show hide the next dropdown profile field, then the next, using the case statement function to clear and repopulate the dropdown options based on the previous selection.
It took me a lot of trial and error because I was learning as I went along (Google is your friend) but if you have a little experience in programming then you can get there. I'm no genius and even I managed it ;)