Можно сделать класс наследник от столь либимого вами ArrayList, MyCollection, например. В нём реализуете свою вспоморательную функциональность.
Недостаток подхода с использованием везде ArrayList в том, что ArrayList не типизирует объекты с которыми работает. У него всегда внутри просто object. Если использовать типизированные коллекции наследники от вашего класса MyCollection, то можно "отловить" больше ошибок на этапе компиляции.
Например, коллекция Users оперирует объектами User и т.д. Иногда колекции должны оперировать объектами различных классов, но приведённых к одному интерфейсу.
While (!Life.EOF){
You.Money ++;
You.Girls.Add(new Girl(90,60,90));
BeHappy();
}