Uniquely addressing vertices in python
Custom Layer Access

Suggest adding a custom layer. Example of adding an int layer.  

id_int_layer = bm.verts.layers.int.new("id")


Vertex groups could also be considered a custom layer, it's the deform layer.

&gt;&gt;&gt; bm.verts.layers.
                bevel_weight
                deform
                float
                int
                paint_mask
                shape
                skin
                string


Example of adding an int layer with values assigned to vertex index. 

import bpy
import bmesh
obj = bpy.context.object

bm = bmesh.new()
bm.from_mesh(obj.data)

#get or create custom verts int layer
my_id = bm.verts.layers.int.get("id") or bm.verts.layers.int.new("id")

for v in bm.verts:
    v[my_id] = v.index  # assign value
    #print(v.index, v[my_id])

bm.to_mesh(obj.data)


Also see examples here, for tagging specific vertex using this method.  Custom data of vertices, Vertex Layers

After setting the layer on default cube, extruding one face, saving then reopening and printing v.index, v[my_id]

0 0
1 1
...
7 7
8 0
9 1
10 4
11 5


New verts 8 to 11 have the layer value of the original they were extruded from.