The typical 'Craft' way of doing this would be via a Matrix field instead of a single text block field, so that editors can sandwich the dynamic content (which would be its own block type) in between whatever other block types they select. That way is very powerful, flexible, extensible, and clean...
However, assuming migrating your content to a Matrix setup would be too onerous or undesirable for other reasons, there's nothing to stop you creating your own basic shortcode replacement functionality via Twig's replace
filter. For example, in your body field you might insert arbitrary markers like [list-of-entries]
... then in the template that outputs the field, you can go to town with defining what each shortcode represents and then replace
them like this:
{% set listOfEntries %}
<ul>
{% for item in craft.entries.section('something').all %}
<li>{{ item.title }}</li>
{% endfor %}
</ul>
{% endset %}
{% set parsedBody = entry.body|replace({
"[dynamic-address-injection]" : craft.entries.section('something').one().addressField,
"[video]" : entry.videos.one().embedCode,
"[list-of-entries]" : listOfEntries
}) %}
{{ parsedBody }}