You can create models with multiple layers just fine:
https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/resources/assets/harderores/models/block/hardore.json
It is also possible to read two (or more) textures off the disk and combine them during the texture sheet stitching process, but it's not documented and can be difficult to do right (and if it crashes the game, its very hard to diagnose).
If you want to do items with layers, based on NBT, that's doable too. You need to define a Custom Mesh Definition:
https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/industry/item/ItemCastingMold.java#L89
And register it:
https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/hardlib/client/ClientEasyRegistry.java#L194