Coming across this cause running into a similar issue, I think the best solution would be to create an annotation that could represent the access level. then your could specify custom access levels using the already existing mechanism for specifying annotations on properties, which already work in constructors.
so you could have
data class myDataClass(@set:Private var someVar)
There is no new syntax required, just annotation handling by the compiler.