BMesh: How to map vertex-based UV-coordinates to loops?
It took me some time to realize I could just ask the vert property of a BMLoop when iterating through them, and then ask the index property of the retrieved BMVert to find my index.

It required to call bm.verts.index_update() before, or all the retrieved indices would've been -1.

This is my working code:

vertices = model.get_vertices()
# Add the vertices to the model.
for vertex in vertices:
    bm_vert = bm.verts.new(vertex.p0)
    #bm_vert.normal = vertex.n0 # TODO: Blender does not really support custom normals yet, and they look weird.
bm.verts.ensure_lookup_table() # Required after adding / removing vertices and before accessing them by index.
bm.verts.index_update()  # Required to actually retrieve the indices later on (or they stay -1).
# Connect the faces, they are organized as a triangle list.
for i in range(0, len(indices), 3):
    bm.faces.new(bm.verts[j] for j in indices[i:i + 3])
# Set the UV coordinates by iterating through the face loops.
uv_layer = bm.loops.layers.uv.new()
for face in bm.faces:
    for loop in face.loops:
        # Get the index of the vertex the loop contains.
        loop[uv_layer].uv = vertices[loop.vert.index].u0