I was reading Wikipedia about the von Neumann bottleneck.
Surely there is some simple answer to this. Why can we not read and write to the same address at the same time? We can if the addresses are different.
In other models (a distributed architecture, for example, with several processors) you can often do concurrent reads, where two or more processors are able to read a word from memory simultaneously. The problem with concurrent writes is more complicated since you have the possibility of a race condition: if one processor wants to write 31 to a memory location and at the same time another processor wants to write 0 to that location, the behavior of the system might not be predictable so running a program twice might result in two different results. Dealing with this problem can be tricky, as you might imagine. That's not to say it can't be handled, only that it's more complicated.
In my understanding, reading and writing to the same address "at the same time" (or called "simultaneously") in your post means that the read and the write "overlaps" with each other: every operation takes time, no matter how short it is.
The "overlapping" can be interpreted in different levels. At a high level, any two concurrent operations (i.e., no one ends before the other one starts) in a multiprocessor computer can be regarded "overlapping" with each other. (Also see the answer by @Rick Decker)
You are probably more interested in the case that "simultaneous" read & write happen on a physical level. If so, dual-port RAM may be relevant.
Quote from the "dual-port RAM" document:
The dual-port configuration has two separate blocks (block A and block B) and corresponding clocks (CLKA and CLKB). This allows the user to perform both read and write operations on both blocks A and B. However, when performing simultaneous operations there may be data collisions and undesired data may be obtained at the output.
Note: The information about "dual-port RAM" is from a comment on a question about "safe registers" at cs.theory.