These fixes are OK as work-arounds in a pinch, but Evolutions is violating the CardDAV specification, so the real fixes need to go there.
Section 6.2.2 says that clients MUST get a CARDDAV:supported-address-data precondition error if they attempt to create an address object resource not advertised by the server in the CARDDAV:supported-address-data property. In our case, we only advertise support for text/vcard version 3.0.
And Section 5.1 says:
vCard components in an address book collection MUST have a UID
property value that MUST be unique in the scope of the address book
collection in which it is contained.
I think fixing bugs in Evolution would be more appropriate than working around these bugs in the server.
-wsv