Nice work zozodesbois, I haven't tried it yet (I am not home) but looks like it would work fine on the POHD or any other similar player.
As far as some of your problems here some of my thoughts for whatever it's worth:
I think that the "getEnv" availlable in the rss feed it only valid within the context of the IMS feed and unlike c++, php, python etc... does not refer to an actual system variable and in most cases must be declare previously before it can be used. I think this is more or less a way to pass variable from one feed to another. I've seen a lot of example where it was used to fetch a password; something like:
if password = "NULL" then ..... launch another RSS feed to allow user to enter password. Password is then store in the new rss feed with "setEnv" and then control is return to the previous rss feed. From that point on all rss feed within that session can call up the password with the "getEnv"
I am also not sure in case I am wrong with my first assumption that random is available on "sh" I know it is on "bash" but not sure in "sh". I am not home so I can not check to see if environment variable exist on my player.
Your second issue is pretty hard to fix since the "&" is a special character when dealing with rss feeds. You could try to catch that after the creation of you xml file; you could use "sed" to search and substitute any encounter of "&" in the music file name and replace it with "&". I believe this might resolve your issue with regards to the "&" characters in the filename ..... maybe.
You third issue could be resolve with the "setEnv" , "getEnv" but you probably thought of that already when you read my comments about your first problem.

You could also write the path to a file and then read that file from the main script; I guess it depends when the call to the other rss script was made. You could also use the following:
rss = "rss you want to go to";
path = doModalRss(rss);
In the "rss you want to go to" you will need something like:
if ("enter" == userInput) {
path = "whatever path you selected";
setReturnString("path");
postMessage("return");
handled = "true";
}
Anyhow hopefully this will help you resolve your issues; if you are wandering what I am doing lately ...well let's just say as little as possible and enjoying the summer.
A bientot mon ami.