Alex,
Ah, thanks for clarifying. If knitr isn't generating the image, than of course any knitr settings have no effect. It's important to keep in mind what tools are doing what.
Knitr is not a markdown parser, it isn't touching your markdown. It's just turning your R code chunks into the desired output (in this case, markdown). When knitr sees some markdown code like

it just leaves it as is, because it's not an R chunk. Just like any other markdown text. Does that make sense? So then of course the image_uri setting has no effect.
Pandoc, unlike knitr, is a markdown parser, so it reads all the markdown.
Sounds like all you need is to convert your existing, non-knitr generated images to base64. You can do that in R, e.g. by using the function that knitr is using in image_uri (markdown:::.b64EncodeFile, or just copy-paste the data-uris generated by pandoc back into your markdown).
Pandoc --selfcontained is not imcompatible with Mathjax. It is incompatible with the `--mathjax` flag because you cannot make the whole externally linked mathjax javascript library into a data URI.