vtkDistancePolyDataFilter gives incorrect distance sign

You can use files to pass data between ITK and VTK, but you need to choose a format that both ITK and VTK can read/write. vti is not among them, but there are several others that you can use, for example .mha and .nrrd. Running an ITK filter in Python should be straightforward, you can find lots of examples online.

If you work with images (the shapes are generated by segmenting an image) then you can avoid conversion from mesh to distance map and you can compute signed distance map directly from the image (using ITK filters). If your inputs are surface meshes (e.g., from a surface scanner) then you may have to use angle-weighted pseudonormals (such as vtkImplicitPolyDataDistance) or rasterization (such as vtkPolyDataToImageStencil) to create a distance map - which might fail if the mesh quality is not optimal.