You need an else statement in the setRotationAngles method to reset the angles back to default if the entity isn't on the ground as it is using the rotation angles for the one that is on the ground. There is only one Model object which is used globally for all entities so the rotation angles are being shared and only updated on the one which is grounded.
If you want to completely remove the vanilla drops the easiest way is to override the loot table for that mob. If you want to add extra drops to a mob then you should utilise the LivingDropsEvent call on the event bus.
The reason this error is happening is that you are using the old TileEntityType in your TileEntity constructor instead of the newly registered one. When creating the new TileEntityType store it in a public static final field and use that instead of the old one.
You can replace the Vanilla enchantments by registering your own enchantments with the same resource location as the originals. However, removing the enchantments completely is impossible to do without causing crashes.
There is no way to change the location of the Item models as they are loaded the same way blockstates are loaded. The only reason the Block models can be moved into subpackages is that they are only referenced via the blockstate files and Item models are referenced statically.
Look at net.minecraft.client.renderer.model.ModelBakery#processLoading to see how it loads the models.
If you want your block to work with all items from other mods you can use the Forge provided method: FluidUtil.interactWithFluidHandler(player, hand, world, pos, side) which returns a boolean value if it is successful.
At a first glance in your inventory class in the decrStackSize method, I can see that you are performing the splitStack operation on the new stack you just created. So, to fix this you need to replace stack.splitStack with inventory[slot].splitStack.