I ended up going with @Arun's suggestion and programmatically built up the expression and evaluated it. Here's a data.table specific implementation. I had to resort to string manipulation (instead of operating only on symbols using bquote), so it's not as clean as I would like, but it works.
allColUniqExpr <- function(colNames, resColName) {
makeExpr = function(x) sprintf('%s != %s', x[1], x[2])
expr = apply(combn(colNames, 2), 2, makeExpr)
expr = paste(expr, sep='', collapse=' & ')
expr = sprintf('%s := %s', resColName, expr)
expr = parse(text=expr)
expr
}
To use:
fooTbl[, eval(allColUniqExpr(c('ind1', 'ind2', 'ind3', 'ind4'), 'uniq'))]