To refine your code:
Try to use arduino IDEs "Tab"-Function. Add few tabs to organise your code.
e.g. Tab "Network" with functions like init_rf() and just call this function from your setup() or before() method. Same with your actual sensors. Consider making an extra tab to put all the relevant functions there.
I try to keep my "Main" tab as clean as possible.
As I understand your code right your rf95 receiver acts as a gateway to mysensors
MyMessage msg(NODE_ID, V_FLOW); // Set's up mesaaging protocol to reciever, lets it know what variables are used
MyMessage vmsg(NODE_ID,V_VOLUME); // V_FLOW means that the data being sent is a flowrate, etc.
All your Sensor-Nodes who send to your receiver-serial-gateway should have different IDs and your gateway should use these IDs to send the sensor date to your controller.
So NODE_ID should be a variable depending on "from which node" you got your sensor date.
Have a look at "MyMessage.h"
// Setters for building message "on the fly"
MyMessage& setType(uint8_t type);
MyMessage& setSensor(uint8_t sensor);
MyMessage& setDestination(uint8_t destination);
You can change the message Sensor (your actual sensor no the gateway) dynamically on your gateway depending on the payload you get and from which sensor.