Hi,
Data cleaning is often times the most time-consuming part of data science, so I feel your frustration 
Given I don't know anything about the different datasets, it's very hard to come up with some sound advise. Is it just the column names that are different, or do you have to prep some columns differently between clients before they can be compared? (e.g. different formatting of dates, string, etc)
If the differences are consistent, you can indeed create a metadata table once that holds instructions on how to pre-process data from different clients. Here is an example on how you could standardise different column names
#Change per client
myClient = "client1"
#Pre-made conversion table
dataConversion = data.frame(
standard = c(paste("Col", 1:4)),
client1 = LETTERS[1:4],
client2 = sample(LETTERS, 4)
)
#Here you should read in the client's file (csv, xlsx, ...)
readData = data.frame(X = runif(5), B = runif(5), C = runif(5), A = runif(5), D = runif(5))
#Standardise
readData = readData[,dataConversion[,myClient]]
colnames(readData) = dataConversion$standard
readData
I'm happy to help out more, but I'd really need more details on the differences in data sets.
Hope this helps,
PJ