There is a mechanism in XML that allows for the kind of extension that you are doing, and avoids the conflict by allocating tags in specific namespaces. To use this, you need to use the XHTML syntax encoding of the HTML5 vocabulary. (See HTML vs. XHTML.)
What it allows you to do is to declare a namespace (which looks like a URL) and a token (e.g. "mx" for "my extension"). You need a namespace declaration at the top that associates the namespace with the token. (See Declaring Namespaces.)
<html ... xmlns:mx="http://mycompany/myextension" ... >
Then, instead of defining a <wrapper>
tag, you define a tag <mx:wrapper>
Because of the token, and colon, you can never conflict with an official HTML tag, because those tags are in a different namespace. (See Namespaces of HTML5.)
What about conflicts on the token? Remember that the "mx" is just a local identifier associated with the longer, and globally unique, namespace URL. In another document the token "yob" might be associated with the namespace, and the tag would be <yob:wrapper>
in the body of the document.
I don't know if this is the answer that you wanted, but the namespace mechanism is a well proven (if cumbersome) way to mix together tag sets from different standards bodies which necessarily work independently, but need to mix their results together into a single document.
It does require that you use XHTML, instead of HTML syntax, which actually works in most of the browsers I have experience with, in fact I generate exclusively XHTML syntax and have not had problems, but you will need to investigate whether that is suitable in your environment