Тем, что слишком много логики ложится на модель.
Помоему императивное «жевание» результата декларативной операции так же приведет к увеличению логики.
Сделать class Items_pool и понавешать foreach для каждого случая — первое, что приходит в голову, но чувствую, что это некрасиво
Для применения курса валюты на стороне клиента необходимо пройтись циклом по выборке, а при решении задачи средствами SQL достаточно попросить сервер результат умножить на курс.
Вам виднее, но мне кажеться логичным формирование индивидуального запроса на стороне клиента, (например с использованием хранимой процедуры если количество атрибутов строго ограничено, в противном случае слышал, что может помочь Query Object, но сам никогда не использовал) и получать от сервера «готовые» данные.