Sealing is the only way to ask for exhaustiveness checking. However, you could define package-private traits AGuts, BGuts, CGuts, etc. in separate files and then in one file create sealed subclasses A, B, C, etc. as you did before, but mixing in those guts defined elsewhere.
sealed abstract class Thing
class A extends Thing with AGuts
class B extends Thing with BGuts
...