Minecraft resource packs aren't able to add new blocks in the game. They can retexture and repurpose existing blocks, but not add new ones.
This suggestion is very simple: Add a few dozen blocks whose sole purpose is so that resource pack authors can give them textures and purposes, without removing any vanilla blocks.
These blocks might have IDs such as "minecraft:normal_block_0x0000", "minecraft:normal_block_0x0001", etc,.
Several things about these blocks would be changeable, which, with normal minecraft blocks, are immutable: Transparency, Luminance, Blast Resistance, Hardness, Gravity, etc. Just like normal minecraft blocks, these values would be held in common across all blocks with the same block id; these changes aren't intended to be frequent... merely changed once, when the resource pack is loaded.
Some of these new blocks might have IDs such as "minecraft:fancy_block_0x0000", "minecraft:fancy_block_0x0001", etc,. For these blocks, every normal java method on the block calls a registered function (from a .mcfunction file).