I am beginning to believe that is really just isn't possible. The alcohol makes up a huge flavor component of the style/beer even if we don't "perceive" it. As mentioned above, without it, the beer tends to become grainy tasting. I'm noticing this more and more as I brew these low abv beers. Body is not a problem, that's easy to keep in low abv, but that flavor component is huge, I feel.
I write the following with a light hand because there is a danger that you could interpret this as me suggesting that you're not a competent brewer.
That's not at all what I'm trying suggest. Instead, I'm highlighting a few insights that I stumbled upon over many years of trying to learn how to make session ales that are just as satisfying as their more substantial brethren.
Could you describe a bit more what you mean by "grainy?" It's really easy to over-sparge session beers and if you don't have solid control over your pH, things can get out of hand in a real hurry.
Especially with my tiny UK ales, I've written new Brewsmith mash profiles for UK ales. The goal of these profiles is the reduction of my sparge water budget via the use of a second infusion in the mash tun (strike @ 148F, infuse to 155F). The more I brew, the more firmly I hold the opinion that shifting your water budget away from the sparge tank and toward the mash tun results in better beer. When it comes to smaller beers, I think the effect is especially noticeable.
Also, I've found that gently over-acidifying your sparge water yields improvements. For example, I generally like to mash at pH 5.4 and over-acidify my sparge such that my entire runnings, pre-boil land at or below pH 5.3. Again, this seems to help to produce a superior beer. I brew with tap, so this is easy to accomplish. If you're using RO, this might not be feasible.
I'm really sorry about bringing this up, but it is worth mentioning! Have you goofed around with LODO? Once you've done it a couple of times it's easy to do, cheap, and it really does make a tangible difference. Also, you don't have to go full LODO right out of the gate. I gradually introduced LODO techniques into my brewery and continued adding them as I saw tangible improvements. In fact, I'm still not fully LODO compliant (*snicker* Ah, those guys!) because I refuse to give up my old copper IC--it's paid for, it does a great job, and it doesn't need replacing. Thus far, LODO has been cheap and easy. I prefer to keep it that way.
Wrapping up, I suppose you can think of it this way: Your brewery isn't a sausage machine. The neat thing about sausage machines is that no matter what you put into them, it comes out sausage on the other side, right? Breweries aren't at all like that! It's important to adapt your brewery to optimize the beer you're trying to brew. I certainly don't brew my tiny beers the same way that I brew my IPAs, or my lagers, or anything else really.
To do session beers right, you need to tweak your approach a bit. Without much thought, we adjust our grainbills to account for inefficiency in barleywine grists, add rice hulls to the grist for wheat beers, add ferulic acid rests to hefes, decoct or step mash certain lagers, so why aren't we adapting our breweries to accomodate smaller beers?
I hope you've found this helpful. It's a bunch of stuff that I've learned the hard way and I hope you take it in the spirt in which it was meant. Again,
I'm not implying that you don't know what you're doing. I'm just trying to pass along some lessons that I learned the hard way and I hope that you receive this post in that way.