Modbus slave firmware development
The choice of how to store your database is largely up to your own requirements, not really a modbus question.  As for good things to do for modbus I'd recommend implementing some register that provide identification details, to allow automatic probing, and serial numbers, or other fixed numbers that can be used to verify that the device is your device.  You can even provide registers to blink your led to help locate the device.

Also, don't feel limited to a single block of registers.  Use them as logical blocks if you can, rather than trying to make a hard 1:1 map to your variables.  This makes it easier to group and expand things down the road.

Try and avoid special casing on the register count.  It's perfectly legitimate (protocol wise) that "reading 4@0x2000" gives you different data than "reading 2@0x2000 +  2@0x2002" but it's just going to confuse your users.

Try and make sure to actually be consistent with byte ordering.  Try and stick to big endian like the rest of the protocol.