This was something I had a lot of trouble with as well; I was not necessarily in the same environment that you are but I had a situation where my GUI map constantly changed. The best way I found was to write the GUI as I went if I had to rely on any objects that were dynamic and I did this by traversing my page and getting the objects on it and then writing those into the temporary GUI Map and then saving it. Then I had to compare the GUI list I got with the baseline that I had previously stored.
However, this was, in many cases, horribly slow and did not always work because I had to know the main window in the first place which was also dynamic. Also given that TSL is not object-oriented doing what I was trying to do was incredibly cumbersome and led to some hard to maintain code.
You should contact Mercury tech support because I know that now WinRunner can rely on internal names of Oracle Java objects.
I think it requires a specific version of your Oracle forms server but also a patch for WinRunner.