Oh, and on the topic of not having locations be on random encounter tables or be otherwise mobile -- you're absolutely missing out on a great encounter tool. "Monster lair" is a great encounter idea. As is "fairy grove" or "thin place between planes." These don't need to be in fixed places, planned beforehand. They can be on encounter tables, or encounter lists, or just dropped in when it feels cool.
I admit, this is diving right into the grey area, as Don Durito said, but I still see some major differences here. A fairy grove
makes sense as a thing you could just sort of...randomly run into wherever. It
fits as a random thing, in part because it's a very simple, straightforward location: a grove, where fairies live. Likewise for "monster lair" (very simply, "a monster sleeps here") or "planar thin place" (which could be almost anything).
A haunted house, by comparison, is a much more involved thing. I mean, purely from the brute facts, it had to be
built by someone, or in some other way created (magic, illusion, whatever). And it's almost certainly going to be filled with a lot more
stuff than "a fairy grove" or "a monster den" is going to be. The whole point of this haunted house example is that it was, in essence, a mini-adventure being
forced into the players' path, no matter what they choose. Having a fairy grove, monster den, or other small surprise crop up along the journey...that's pretty well expected, if you're travelling through Dangerous Wilderness.
Again, there is no proper
formula for avoiding railroading. But it seems pretty clear to me that a "haunted house" is in a different category from these small, simple, natural phenomena. It's much more complicated and implies far more
stuff about the world around it than the fairy grove or the monster den does.
Even if that thing you decided about is two hexes out, and the haunted house is put in the intervening hex of whichever direction you go? Is it ok if it's avoidable once you find out it's there (E.g. it doesn't fill the hex).and becomes a permanent part of the map.
I don't run a hex crawl, so this is hard for me to comment on. I imagine it might depend in part on the group.
Perhaps I should ask a question: Is the house being put there purely IN ORDER to be in the party's way? Or is it being put there, alongside many other things, so that there is a "there" to go to? Because I'd definitely argue that intent and purpose matter a LOT for this situation. If the intent is "I'm trying to passive-aggressively
make the party do this thing I made," then...it's soft railroading where the DM permits an out but is really really trying to
make it happen. If the intent is, "Ooh, this could be fun, let's plunk it down over here and see what the players do," then it's not railroading, it's just painting the background and giving the players their own paints to add to it.
It's a lot like trying to deal with Mary Sue/Gary Stu as a writing problem. No matter what description you give
based on the specific implementation, it is almost always possible for an author to still squeeze out something that gets a false negative. Because the problem isn't "OC inserted into an existing universe," nor "character with tons of special abilities," nor "character everyone likes," it's "character that causes the whole narrative to be
about them," and that's an
inherently abstract concept. Like the Mary Sue, railroading is a problem with a nigh-infinitude of specific implementations, because the problem doesn't
exist at the implementation level.
I see a world of difference between "populating a location so that the party has interesting things to do or see" and "making sure that, whatever the players choose,
my DM plan goes off without a hitch." The former is, as I said earlier,
invention: you're inventing things to populate the space. The latter is
illusionism: making the players believe they're calling shots that they just, flat,
aren't. Every DM employs invention regularly. I don't believe
any DM
needs to employ illusionism--and that the risks and costs of doing so outweigh the benefits.