I used to work in an organization with this problem and this is how we solved it. We had one database with the customer and service info. It had address fields that changed any time a customer requested a change.
The billing database was a separate entity and each month's invoice had the address it was sent to for that month and in theory i've never heard of it changing. I'm not 100% sure but I think the invoice address was generated monthly from one of the tables in the main database.
You have to be careful in changing addresses for invoices because of tax liability. Depending on the products you sell or services you provide your tax collection rates will differ sometimes on a county by county basis and you may be audited and have to provide this info in the future. Changing an address on a past invoice might get your company into trouble.
In reality we had more than two databases, but the bill creation process was extremely complicated in that case. We did have a separate database that held the invoices and other billing info with the table holding the invoice data under tight control and the SOX auditors would look at it every year.
We had raw customer service usage data in one database, pricing plans in another, customer and product lists/features in another database, a separate database for tax info that changed monthly and the taxes collected differed depending on the locality and all this came together to create a bill. Some customers had multiple locations so their taxes would need to be calculated per location.
Some customers paid different prices for the same service because they were bought at different times and different discounts and sale prices applied each time. Some bills were a few pages and some customers had bills in the dozens and hundreds of pages. And a few more databases for late payments, etc. Everything had to be accounted for and charged properly.
There was a main database that had the master customer names, numbers, addresses, products, etc. This was a telecom company and they have something called USOCS which is a crazy code for every product sold. Similar to medical billing codes. We also had a separate database for pricing plans. Think of it like the current cell phone plans, but we had thousands of plans because we had some large customers and some had custom negotiated deals.
One of the reasons it was so complicated is that the end devices that serve the customers have the raw usage data which had to be uploaded to our databases and then priced depending on the rates charged for that customer, their location, tax rates, etc. It's not like a physical product with inventory and the same price for everyone.