Actually, do you want all blocks of certain type to go invisible, or just certain ones within view or something based on specific positions? Any scheme to mess with the block models would affect all the blocks of that type.
If you want different behavior for a block based on its specific position you only have two options: metadata or tile entity. Both of those imply that you would need a custom block since vanilla blocks don't have metadata for that and adding tile entities to all the vanilla blocks of a certain type would cause performance and storage problems.
So you probably gotta find a way to intercept the render.
I'm not sure about another way to intercept the render, but hopefully someone else knows.
There are other ways that would be a lot of work, but I think possible. For example, perhaps you could replace the vanilla models with ones that are conditional based on a player capability.
EDIT: Actually probably wouldn't work assuming you want to only make specific locations invisible. See more below.
Hmm. I hadn't looked at that event for a while but you're right, it is not in 1.12.1 and looking at the events in minecraft forge client events referenced library doesn't show anything that looks like a replacement to me.