Infelizmente, você não pode usar os resultados da subconsulta JPA na cláusula from. Nem nas consultas Criteria, nem nas JPQL. Este parece ser o maior problema em traduzir sua consulta em uma JPA.
Secundariamente, não há
Round
função, também. Mas não deve ser um problema superar isso usando CriteriaBuilder#selectCase()