There's a little less known pattern allowing for high-performance no-allocation unapply method construction. It's described in this blogpost by Heiko Seeberger.
Do you think it would be possible to actually generate sensible name-based extractors in your macros?