I'd like to run some test on my system and for this I'd like to simulate a slow files system.
Are there easy options out there? (an idea that I have currently would mount something over TCP, even if local, then use iptables to limit speed on that particular TCP connection)
That is one option, yes. Export the LUN as a network block device or use iSCSI and add jitter,packet-loss, bandwidth caps, etc to the QoS definitions of that path. By doing so you're going to see the impact of link characteristics and the block device layer's reaction to that rather than a "slow" file system.
To let the file system appear slow you could fill it up to it's limits in terms of files per directory and/or directory count limits. You could additionally lower the queue depth to a something really small which will impact small (and random) IOs generally.
I'm afraid that this could get difficult without a proper disk drive development and debug hardware kit or special built file system which allows you to do these kind of experiments.
Sounds like you've already come up with one solution - have a look at NBD and the Advanced Routing Howto.
An alternative approach (depending on your programming skills) might be to write your own filesystem using FUSE
You can use a Virtual Machine and throttle disk access. This should provide good control over the speed... still not possible to only limit reads or writes.
Here are some tips about how do it in Virtualbox 5.8. Limiting bandwidth for disk images https://www.virtualbox.org/manual/ch05.html#storage-bandwidth-limit