Joda-Time: Calcular Tempo Médio de Durações

Olá pessoal, estou desenvolvendo que fará o calculo de duração e tempo médio.

No caso, preciso apenas considerar a hora inicia e final da lista e realizar sua média.

Estou usando Joda-Time para a ocasião e gostei bastante de trabalhar com a ferramenta.

Montei em todo caso, um programa de teste para simular a informação que eu terei na aplicação real e
consegui avançar bastante usando LocalTime + Period, mas não sei com efetuar a média dessa lista.

Eis ± o que estou fazendo:

//devolve uma hora randomica em Date - isso simula mais ou menos o local de onde eu busco a informação
	public static Date request(){
		RandomDataImpl r = new RandomDataImpl();//aqui usei a apache math
		Calendar cal = Calendar.getInstance();

		int hor = r.nextSecureInt(0, 23);//seta o min e max de hora
		int min = r.nextSecureInt(0, 59);//seta o min e o max de minutos
		int seg = r.nextSecureInt(0, 59);//seta o min e max de segundos
		
		cal.set(1, 0, 1, hor, min, seg); //define
		
		return cal.getTime();//retorna o date
	}
	
	public static void main(String[] args) throws InterruptedException{
		List<Foo> lista = new ArrayList<Foo>();// lista de qualquer coisa com nome, hInicio e hFim
		int i=0;//quantidade na lista - maximo de 5
		while(true){//executa até que seja cumprido o determinado em i
			Foo foo = new Foo();//inicia um novo objeto
			foo.setNome("Indice : "+i);//diferencia os objetos pelo loop
			foo.sethInicio(request());//requisita o objeto de Date randomico
			while (true) {//aqui determina a parte da hora fim
				new Thread().sleep(100);
				foo.sethFim(request());//requisita a horafinal
				if (foo.gethFim().after(foo.gethInicio())) {//garante que a hora estará depois da hora inicial
					i++;//adiciona i para o termino futuro da lista
					break;//encerra o loop
				}
			}
			lista.add(foo);//adiciona o FOO com indice/horainicial/horafinal
			if (i==5) {
				break;//termina o loop quando i atingir valor 5
			}
		}
		for (Foo foo : lista) {//exibe os objetos adicionados
			System.out.println(foo.toString());
		}
		System.out.println("Duração");
		for (Foo foo : lista) {//realiza o calculo da duração dos indices
			LocalTime inicio = new LocalTime(foo.gethInicio());
			LocalTime fim = new LocalTime(foo.gethFim());
			Period periodo = new Period(inicio, fim);
			
			String duracao = periodo.getHours()+":"+periodo.getMinutes()+":"+periodo.getSeconds();
			
			System.out.println(foo.getNome()+" Duração: "+duracao);
		}
	}

No caso, estou querendo ver a média da duração. No caso a Duração de todos/lista.size() mas não vem o valor exato do que eu quero, já que provavelmente estou somando tudo do jeito errado.

Tem algo dentro do Joda-Time que faça isso? Ou alguma formula que eu estou “perdendo” ali no processo?