Alright, it's working now. Here's the summary for anyone coming from Google six months later:
* The call to ModItems.createItems() goes in CommonProxy.preInit(), the call to ItemRenderRegister.registerItemRenderer() goes in ClientProxy.init() after calling the base method.
* I completely missed something in createItems(), can you spot it?
(...)
public static Item tutorialItem;
public static final void createItems() {
Item tutorialItem = new BasicItem("tutorial_item");
(...)
Fuck me ...
* Now the game would start up, but still displayed the error texture. Turns out that this code proposed upthread
ModelLoader.setCustomModelResourceLocation ( item, 0, new ModelResourceLocation("mapoverlay:item/tutorial_item", "inventory") );
doesn't actually work, so I changed it back into the code based on the the tutorial and there you go, working model & texture:
Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
.register(item, 0, new ModelResourceLocation("mapoverlay:tutorial_item", "inventory"));