How to add non-image features along side images as the input of CNNs
My solution is like your first recommendation, but with slight changes.


Construct your convolutional layers and stack them till the flatten-layer. This network should be fed with the image data.
Flat your activation maps
Construct a fully connected network with the desired number of neurons and layers. 
Concatenate the outputs of the flattened layer of the convolutional net and the fully connected net. 
add some dense layers and connect them to the last layer which represents your classes.


You can use customary cost functions for this architecture.