Se o seu hashcode retornar sempre o mesmo valor, estruturas como os sets deixarão de ser eficientes. Afinal, todos os elementos serão agrupados no mesmo índice, o que elimina o grande granho que essas estruturas dão.
Aqui vai uma dica de como implementar o hashcode corretamente:
http://www.guj.com.br/posts/list/52485.java#276120
O HashSet funciona assim. Imagine que você tem um conjunto de gavetas, onde dentro cabem meias (seus objetos). As gavetas podem ser organizadas de diversas formas. Quem diz que forma você organiza as meias nas gavetas é o hashCode. Você poderia, por exemplo, organizar por cor. Meias azuis na gaveta 1, meias verdes na gaveta 2, meias pretas na gaveta 3.
E assim por diante… Se você quisesse a sua meia amarela da seleção canarinho, você abriria a gaveta das meias amarelas (a gaveta 4) e só precisaria comparar meia a meia (com o equals) até achar a meia amarela da seleção canarinho. Seria mais rápido, pois sua busca se resume apenas as meias amarelas, e não à todas as meias que você tem.
Retornar o mesmo número do hashCode é o mesmo que colocar todas as meias em uma só gaveta.
Diferentes números de hashCodes podem deixar as meias mais ou menos distribuídas nas diversas gavetas. Quanto mais uniformemente distribuídas, mais eficiente será sua procura.