Nell'interesse di non reinventare la ruota, se stai usando Apache Commons Lang, guarda ExceptionUtils.getRootCause().
Vale la pena includere una libreria solo per questo? Forse no. Ma se lo hai già nel tuo percorso di classe, è lì per te, e nota che fa alcune cose che un'implementazione "ingenua" potrebbe non fare (ad esempio gestire i cicli nella catena delle cause ... ugh!)