How can you smooth out the transition between these two objects so that they appear seamless?
The main reason for the sharp transition between the two are the fact that the normals are discontinuous between the two objects at the intersection.  You can soften this transition considerably by creating custom normals for one of the objects using a data transfer modifier.  Target one object with the other, set it to affect custom normals, and transfer from nearest face interpolated (usually).  You need to enable autosmooth in properties/object data/normals in order to use custom normals.
You'll almost certainly want to use a vertex group to limit the effect of the data transfer.
Almost all of that is shown in the image below, which compares the effects of copied custom normals on the left with regular normals on the right.

Normals are vertex data, so the closer you can get the affected vertices to a face of the target object, the closer the match will be.  Sharp transitions can still affect actual shadowing and ambient occlusion.  If you have problems with the join because of these factors, you might consider using a shrinkwrap modifier as well, evaluated before (above) the data transfer modifier.