No vertices at face intersections?
Try this:


Go into Edit mode and hit P (Separate) > By Loose Parts. This will separate the pieces of your object.
Pick one of the objects, for example the first one. Add 3 Boolean modifiers to it.
Switch the Operation to Union on all the modifiers.
Set each modifier's Object to be one of the other pieces.
If you get strange results in wireframe mode, switch the Solvers to Carve instead of BMesh.
Hit Apply on each modifier, and  delete the other pieces. You don't need them anymore.


Note that this may destroy your topology. It will keep the shape, but the arrangement of faces may be different.