I hate to say it, but it sounds like a support issue.
The linker will optimise and not include in the .42r, any module that is not referenced. (you'll come across that if you use the INITIALIZER attribute and don't have a reference to that function anywhere else in your code).
First thing is to check your function names for uniqueness which it sounds like you have done. (This is where the PRIVATE FUNCTION that was introduced in 2.21 comes in handy)
I'd also check that the module that is the "specific module that you remove from the link command" is not also defined as being part of the .42x. (ie is included in both the fgllink that produces the .42x and the .42r)
Also you may get a clue by attempting to debug your program. The debugger will relink the program without optimisation and may uncover something.
Hope that helps,
Reuben