I've got an anthology, and I spent a fair time entering the name and role of the editor and each author. Everything looked good, saved the data and file. However, when I imported to Calibre, the book came up as without an author. I reopened the file in sigil, and found that all the role information had disappeared. I examined the opf, and most of the roles were gone there as well.
I added some by hand (edc and edt for the editor, aut for authors), replaced [id="cre"] with [role="aut"] for some, changed <dc:creator> to <dc:contributor> for some, all with no effect.

Also, a Calibre check of the resulting book complains that I have too many creators, and there should be just one. I understood that there could be many creators with different (and overlapping) roles.

id attributes MUST be unique. If you're using the metadata editor, add an "id" property to each creator entry and choose a unique value for it (rather than leaving it up to chance). Then you can add the roles at your leisure.

Valid metadata for an EPUB3 with four authors and one editor would look something like:

then EpubCheck has no complaints. but only one role survives when trying to add/edit multiple roles for one dc entry with the Metadata Editor.

I don't know if that's an issue with the Editor, or if my understanding of the spec is faulty. If EpubCheck doesn't complain, though, it's probably the former. I'll let someone else chime in for sure. In the meantime, manually editing the OPF to add multiple roles to one individual seems to work. I'd just make it the last thing you do, so it doesn't get trashed by the editor when you make a change.

Yes, you should be able to use multiple refines in epub3 to build up more information about a particular epub3 metadata entry. That includes providing them with multiple marc:relator role properties. The Sigil epub3 metadata editor should allow that. If not, that is a bug that needs to be fixed. I will look into it.

Yes, definite bug in metaproc3.py code in the python3lib code in that it remaps all refines targeted at a primary dc metadata element (such as dc:contributor) to be additional attribute/value pair in the attribute dictionary of that specific element. The problem is the property ("role" in this case) is used at the key in the attribute dictionary and so that multiple refines with role properties will simply overwrite each other for the same dc metadata element.

I will either have to allow each property that exists be mapped to a list of values (messy and error prone unless all dictionary values are treated as lists everywhere), convert the attribute dictionary to a simple list of attribute name/value pairs so that multiple role/value pairs can exist in the list, or keep track of the fact that multiple roles for one person can exist by assigning using "role_1", "role_2", etc as keys to keep things unique.

Any approach to fixing this will take time and require some messing around. The sad fact is the whole idea/concept of "refines" and refines on refines is going away in epub 3.1 as an unworkable mess!!!

I will look into better handling this case. As it stands multiple refines are properly handled for epub3 dc metadata elements but only if the property itself is unique. The case of multiple "roles" obviously violates that constraint and needs to be fixed somehow.

FWIW - Few if other cases would need multiple definitions of the exact same property as different properties are given to different title types, and etc.

If you find a way to implement it that doesn't involve an overhaul, then sure. But I don't think we need to upset the apple-cart for a fairly rare event--especially if 3.1 would render such work moot anyway. It can still be achieved manually in the meantime (and there's no reason some edit plugins couldn't be written for specialized metadata entry, as well).

In epub3.1 only one opf:role attribute will be allowed on a dc:creator or dc:contributor element and from what I have been able to find it may only hold a single 3 letter value - not a list of space separated values.