Illegal inheritance from sealed class Type

No.

Yes, but actually no.

You can do something like this:

// All the following code will be on its own package (pckg) and thus in its own folder.

// pckg/adt.scala
package pckg

sealed trait MyADT extends Product with Serializable
final case class Foo(x: Int, y: Int) extends MyADT with FooImpl
final case class Bar(a: String, b: String) extends MyADT with BarImpl

// pckg/foo.scala
package pckg

private[pckg] trait FooImpl { self: Foo =>
  ...
}

// pckg/bar.scala
package pckg

private[pckg] trait BarImpl { self: Bar =>
  ...
}