I’m familiar with this one. From what I can tell, this happens when you are placing blocks from, say, position X5. In X5, you place a block in X1 (some distance away from you), X2, and X3. Because you are placing closer to yourself, you back up to X7. Then, you resume placing… X4, and then you cannot place in X5.
My thinking is that there is a flag that gets placed in that spot (X5) because the player once resided there. Because the player was there, the flag is somehow “stuck” on the game client. Interestingly, you’ll be able to go on and place in X6. But when you back up and try to place in X7, you will run into the same issue again.
A workaround here is to change to a different block or structure. If you are placing foundations, and you get to X5, and cannot get it to snap, swap to your ceiling tile block. This, somehow, causes the game client to reconcile with the game server, and will clear the flag, and will allow you to place (allowing a snap-to). Then, swap back to your foundation blocks.
It is annoying as hell. But this workaround is a pretty reasonable way to address this. Relog will also work as the OP suggested (because it will force client/server reconcile), but takes more time and can lose your server spot if the server is full.