That sounds disconcerting. When we export batch dataflows, we also export all UDFs associated with the dataflow. The only reason why using the "Overwrite" checkbox wouldn't upload the right UDF along with the rest of your batch dataflow into a cluster would be if you had stored the UDF in the default module, which is not overwritten by this process. You'll need to move the offending UDF to another module and then export the batch dataflow again.
The best practices are:
1) To create new modules for your UDFs.
2) To apply rigorous discipline to versioning the module as you make changes. Because UDFs are invoked by name, if you end up using the same module::function combination to refer to different versions of the same UDF function, you could easily make a mistake which would break older use cases.
Let us know if you have other problems!