WOW!
Я бы порекомендовал: написать юнит-тесты, а затем начать рефакторинг
* public fields, no getters/setters
начните с того, что сделайте их закрытыми и «почувствуйте» устойчивость к ошибкам компилятора как метрику.
* huge methods, all public
понять их семантику, попробуйте ввести интерфейсы
* some classes have over 20 fields
очень часто встречается в сложных приложениях, не о чем беспокоиться
* some classes have over 5 constructors (which are also huge)
замените их на шаблон покупателя / создателя
* some of those constructors just left many fields null
см. Ответ выше
* methods and classes rely on each other in both directions
решить, стоит ли переписывать все (честно говоря, я сталкивался с делом, где нужен был только 10% кода)