Либо пробегаться циклом по всем альбомам, либо следующий трюк (работает не на всех db-бэкендах, точно работает в PostgreSQL):
Photo.objects.filter(alb__cat_id=cat_id).order_by('alb', '?').distinct('alb')
Получим в результате по одной случайной фотке на каждый альбом из категории
Однако не забывайте, что order_by '?' может быть веьма дорогой для БД операцией