Session Scope не предназначен для хранения больших объектов. Кроме того, эта самая session действует не на время запроса, а на время работы клиента с приложением. Flash используют для хранения данных между запросами. Такое временное хранилище на случай, если из одного запроса нужно передать данные в другой. Например во время редиректа.
Я бы использовал такую штуку, как play.mvc.Http.Context а в ней есть поле args. Оно как раз предназначено для хранения данных, которые нужны именно для текущего запроса. В контроллере можно использовать так:
ctx().args.put("key", 1);
ctx().args.get("key");
А в модели так:
Context.current().args.get("key");