Если эти списки выбора полностью совпадают, то я уверен, что лучше использовать один список для нескольких DropDownLists.
Похоже на его обычное использование. Я тоже использую подобный подход, но собираюсь перенести некоторые элементы управления в Html.RenderAction, потому что пропуск через ViewData страницы для управления тоже мне не подходит. Да, я знаю, что это не будет чистый MVC:)
Если ваш ORM поддерживает кеш, конечно, используйте его.
Но также, если ваш проект не маленький и вы думаете, что он будет продолжать расти, я рекомендую реализовать уровень обслуживания (шаблон PoEAA) над вашими хранилищами, который будет содержать бизнес-логику и логику управления кешем.
Если вы хотите управлять кешем прозрачно, не затрагивая слой dal или mvc, я думаю, что наилучшим подходом является использование AOP.