I don't think there's any specific documentation on that, and the only people who can answer that are the people who write the source code for CMOD.
In the absence of any evidence to the contrary, I'd suggest that resources expire in the fashion I've described.
As for how resources are re-used... When a new resource is loaded, it's assigned a number (in the arsres table) and stored in the cache or TSM named only by that number. However, there's a "Resource Comparisons" field in the Application definition. If a file is loaded into CMOD, and the resources for the file being loaded match any of the resources within the last X (where X is the number in the Resource Comparisons field) resources, then the existing resource(s) are re-used (by pointing to the matching resources already stored).
If you need an official answer from IBM, open a PMR and request clarification -- hopefully they'll post a technote or include the response in the next release of the documentation.
-JD.