Some quick answers to your questions before I head to slepp ...
Yes, I forgot about "Source" and yes it is supported both as a free-form tag and as DC.source.
Language is only supported as a DC.language and not as free-form right now.
Under xhtml the meta tag only has the following allowed fields as far as I know: "name", "content", "scheme", and "http-equiv" along with the following attributes: "dir", "lang", and "xml:lang" so I do not think it is proper xhtml to use opf:role or any of the other field values inside a meta tag and that is why DC came up with refinements.
The full set of DCTERMs. is given by:
So when you design you approach, we should probably try to map as many things to official dc. and dcterms. as possible since those could be passed through using the same dublin core schema and link.
"CustomID" is the exact string that must be used in the scheme of the Identifier. Using refinements in xhtml it might look like the following:
inside the meta tag for example.
Hope something here helps.