as far as IMAGE_FILE_LARGE_ADDRESS_AWARE ($20) saving your butt, I don't think you need it but, it won't hurt having it either.
As far as what you should do regarding the memory use, I don't think that in this particular case, memory use should be the determining factor in your decision. IMO, your decision should be determined by the application's long term maintenance complexity. Usually, having duplicate data is very undesirable because it means that if one change is needed in data that is duplicated, that change needs to be done in as many duplicates as there are. THAT, IMO, is the real problem, not the memory usage.
As far as memory goes, the days of 640Kb are long gone. Programmers have gotten used to saving space at the expense of additional code complexity, IMO, saving space at the expense of code complexity is a bad idea because today's machines support as much as 256GB of memory and that number will increase as time goes by, not to mention that memory gets cheaper as time goes by.
OTH, code complexity means more programmer time, which is usually more expensive every day and, also means a higher probability of bugs in the code.
Conclusion: memory shouldn't be wasted but, the efforts programmers made in the past to save memory at the expense of code complexity are rarely justifiable these days.
The question you should ask yourself is: will having only 1 common set of cards make the app easier to maintain ? if the answer is yes, then I suggest you take that route and, use as much memory as is necessary to keep the code simple and fast.
HTH.