From what you are describing it seems you are using Indexing V1. So from what I know you would really have two options which the first one would be to upgrade your clients to Indexing V2 (Upgrading Clients to Indexing V2) and if that is not an option right now, you can build a Secondary Index Server.
For Secondary Index Server refer to: https://documentation.commvault.com/commvault/v11/article?p=10715.htm
The indexing retention service for V1 will run every day and clean anything older than 15 by default. You can configure the retention as well, see the link https://documentation.commvault.com/commvault/v11/article?p=10713.htm
Index Version 1 Diagram https://documentation.commvault.com/commvault/v11/article?p=10709.htm
Index Version 2 Diagram https://documentation.commvault.com/commvault/v11/article?p=10774.htm
I`m just a CV user, there are some Pros here that im sure can shine a light to you as well.
Hope that helps.
Some users in the past created much larger index cache repositories for specifically this purpose.
You would essentially have a much larger index cache directory on a dedicated MA (say 10-20TB) and configure extremely long index cache retention for this MA. This way when you use this MA for restores etc it would only need it once and essentially attempt to keep available forever. You would need to remember to do a browse for each job using this MA before tapes go offsite so that indexes are populated to this MA.
But yes, best way forward would be V2 indexing where the new index DB will contain everything needed for a subclient/backupset level rather than individual jobs for V1 indexing.