The issue was with consuming the role and trying to leave the required methods' implementation to a subclass (example)
Using the Moose Role as a sort of base class on its own (possibly adding some concrete common details) allows it to be extended/specialized like I wanted, and is satisfactory. stvnpointed this out.