If I release a client with custom engine code (e.g. 4.15.custom.1) and make changes to the cpp code (e.g. charactermovementcomponent.cpp) and revise the engine version to (4.15.custom.2) will I be able to push changes through in a patch or are patches strictly prohibited to project code?
When you create a shipping build your project code and engine code are merged together into a single executable. You can modify the engine to your hearts content.