Taming outliers in pulsar-timing datasets with hierarchical likelihoods and Hamiltonian sampling