You may not mind the triangles, but Smooth Shading and Subsurf always do.
Personally, I don’t see why you would need to join geometries, as none of them is raytraced glass. A renderer doesn’t care about polygons, its normals it sees. You can move the edge of your relief into the jar’s wall a little, to aviod photon mapping artifacts.
Another way is to make your relief a normal map or a displacement map. First one would decrease the polycount as well.
Or you can try to retopo Shrinkwrap’ping a cube around your Boolean union and cutting a lot of loops through said cube, which generally is more poly-efficient than displacing a highly subdivided mesh. Or Remesh it. Or…
And if everything fails, then you can begin manually creating and connecting vertices.
By the way, what engine do you use? The result looks fantastic.