First I have to mention that you are working with sets.
So you can treat each interaction agents (proteine and residue) as part of interaction set. So basicaly it goes down to 6*500 = 3000 agents for your task.
doing mappping protein->ProteinSet and residue ->ResidueSet
you can create hash
h{memberOfProteinSet}{memberOfResidueSet} =\@ArrayOfInteractionResults[numberOfInteraction]->\%hashOfIteractionResults. If you want to count all iteractions.If you want to hold values
between chain interactions again map it to set and you have a structure of 15*14*3000=630000 which still is smaller than 15*250000=3500000.
Edited by Chady -- added code tags.