How to get owner Mesh from a MeshEdge or MeshVertex?
In theory you could add default values - like inMesh=None, inVertex=[], to be compatible with python code that doesn't add the extra arguments. In reality that may still fail as blender uses mostly C/C++ code for internal data like vertices, and it only provides a thin python wrapper to access that data, so some areas will not work well with custom python classes.

The good news is that you don't have to do any subclassing as blender supports adding custom properties to many existing classes. While the vertex and edge classes aren't in that list you can add properties to the Mesh class.

A collection allows you to create a property that is a list of custom classes, this would allow you to have a list that holds as many extra properties as you want for each vertex.

A slightly adjusted version of the example in the api docs -

import bpy

class CustomVertex(bpy.types.PropertyGroup):
    name = bpy.props.StringProperty(name="Test Prop", default="Unknown")
    value = bpy.props.IntProperty(name="Test Prop", default=22)

bpy.utils.register_class(CustomVertex)

bpy.types.Mesh.my_vertdata = bpy.props.CollectionProperty(type=CustomVertex)

objdata = bpy.context.object.data

new_item = objdata.my_vertdata.add()
new_item.name = "Spam"
new_item.value = 1000

new_item = objdata.my_vertdata.add()
new_item.name = "Eggs"
new_item.value = 30