Charles,
the problem with REShacker is that every time the executable is recompiled by Oxygen a new run of REShacker is necessary.
I would be glad to help, but looking at the oxygen source code it's obvious to me that our brains don't code alike (you are way to intelligent... I can't keep up).
What would be needed are 2 compiler directives (like #manifest "mymanifest_file.xml" and #appicon "my_icon.ico") these would get the file names, read them into separate blocks of memory and keep them until the PE file needs to be build (and then written at their proper location).
The icon - without the icon header (the first 18 bytes if I recall correctly) - can be mapped byte by byte into the designated resource section RT_ICON.
Also the application icon needs to be the first in the icon resource list and be listed twice (RT_ICON and RT_GROUP_ICON) otherwise it will not show up in the left-top corner of a window.
In the RT_GROUP_ICON section you copy the header of the icon (the first 18 bytes of the icon file) followed by the ordinal number of the icon (in this case a 1) and a $0; so 20 bytes in total.
The manifest file can also be mapped byte by byte into his location (RT_MANIFEST).
Here an example of a minimal manifest file (can be used as it is).
For newer Windows OS (Vista and W7) more stuff can be build into the manifest file to make sure the application works as expected (admin rights and such...)
As a resource language ZERO (0) could be used instead of 1033 (english) or any other language because ZERO works on any Windows OS (any language).
For icons it's not important anyhow (unless you add strings or menues to the resources it's not an issue).
Anyway, enough rambling... suppose you knew all this stuff already.
Take care
efgee
EDIT: Added more information...